
使用Python和Matplotlib模块绘制柱状图
5星
- 浏览量: 0
- 大小:None
- 文件类型:PDF
简介:
本教程详细介绍了如何利用Python编程语言结合其强大的数据可视化库Matplotlib来创建美观且信息丰富的柱状图。通过简单的代码示例逐步讲解图表的基本元素设置、颜色选择及样式调整,适合初学者掌握基础的数据展示技巧。
在Python编程中,绘制柱状图是数据分析与可视化中的基本技能之一。使用matplotlib库可以轻松创建各种二维图表,包括柱状图。这类图形用于展示分类数据的频率或度量间的对比。
本部分将详细介绍如何利用matplotlib库来绘制竖直方向上的柱状图。在该库中,`bar()`函数是主要工具:
```python
bar(left, height, width=0.8, bottom=None, hold=None, **kwargs)
```
具体参数说明如下:
- `left`: 每个柱子的x轴起点位置;
- `height`: 各柱的高度,以y轴零点为基准;
- `width`:默认宽度设为0.8;
- `bottom`: 定义每个条形底部的位置(在Y坐标上的值);
- `facecolor`: 指定填充颜色,默认无指定时使用库内设定的颜色序列;
- `edgecolor`: 设置柱状图边缘颜色,同样可以省略不填默认为黑色;
- `yerr`:用于展示误差范围,添加此参数后在条形顶部会出现一个蓝色的区域表示允许的最大误差。
例如绘制包含数据误差区间的竖直柱状图代码如下:
```python
import numpy as np
import matplotlib.pyplot as plt
n = 12
x = np.arange(n)
y1 = 3 * np.random.uniform(0.5, 1.0, n)
error = [0.2] * n #定义误差值列表,长度与数据相同。
plt.bar(x, y1, width=0.8, facecolor=9999ff, edgecolor=white, yerr=error)
```
绘图完成后通常需要在图表上加入说明信息。例如,在每个柱子的顶部标注数值可以通过`text()`方法实现:
```python
for x_val, y_val in zip(x, y1):
plt.text(x_val + 0.4, y_val + 0.05, %.2f % y_val, ha=center, va=bottom)
```
对于更复杂的分组柱状图,可以通过创建子图表并调整透明度来实现:
```python
import numpy as np
import matplotlib.pyplot as plt
Group = namedtuple(Group, [men, women])
n_groups = 5
means_men = (20, 35, 30, 35, 27)
std_men = (2, 3, 4, 1, 2)
means_women = (25, 32, 34, 20, 25)
std_women = (3, 5, 2, 3, 3)
fig , ax = plt.subplots()
index=np.arange(n_groups)
bar_width=0.35
opacity=0.4
rects1=ax.bar(index, means_men, bar_width,
alpha=opacity,
color=b,
yerr=std_men,
label=Men)
rects2=ax.bar(index + bar_width , means_women , bar_width ,
alpha = opacity ,
color =r ,
yerr = std_women ,
label =Women)
ax.set_xlabel(Group)
ax.set_ylabel(Scores)
ax.set_title(Scores by group and gender )
ax.set_xticks(index + bar_width / 2)
ax.set_xticklabels((G1, G2, G3, G4, G5))
plt.legend()
```
上述代码创建了一个分组柱状图,通过不同的颜色和位置区分不同类别的数据,并设置了x轴的刻度标签。最后调用`legend()`方法添加了图例。
使用`plt.show()`函数将图表显示出来。还可以设置坐标轴的范围等属性以优化视觉效果,如`plt.ylim(-3.5, 3.5)`。
以上是利用matplotlib绘制柱状图的基础方法和示例代码解析。实际应用中可以根据需要调整更多细节来满足特定需求。掌握这些基础技术后可以进一步学习该库提供的高级功能实现更复杂的数据可视化任务。
全部评论 (0)


