matplotlib:直方图的绘制
Posted xmcwm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matplotlib:直方图的绘制相关的知识,希望对你有一定的参考价值。
1、matplotlib绘图三部曲
(1)创建画布
(2)绘图——包含绘图与图形修饰
(3)绘图展示
2、直方图的绘制
(1)导入模块
import matplotlib.pyplot as plt
import numpy as np
将模块导入到脚本中,并更改名字为plt
(2)创建画布
plt.figure(figsize=(8,5), dpi=120)
使用figure()方法创建画布,figsize=(x,y)参数用于设置画布大小,单位为英寸,dpi参数用于设置图片像素
matplotlib默认不支持中文和符号和字符
plt.rcParams[‘font.sans-serif‘] = ‘SimHei‘ plt.rcParams[‘axes.unicode_minus‘] = False
加入上面两行代码,使其能够显示中文和符号
(3)绘图——包括绘图与图形修饰
-
准备数据(以班级同学身高数据为例)
data = np.random.uniform(low=150.0, high=195.0, size=33)
height = np.array([float("%.1f" % i) for i in data])
数据一般以数组的形式来表示,这里使用random.uniform()方法随机生成在150和195之间的33个身高数据,height指的是班上同学的身高
- 确定每一组的组距
group_num = 5 ptp = height.max() - height.min() step = int(np.ceil(ptp / group_num)) bins = np.arange(height.min(), height.max() + step, step)
先确定分组数目,再对这组数据的进行最大值和最小值求差计算,最后确定每一组的组距,使用ceil方法设置组距,参数为组距;bins为横轴刻度
- 绘制直方图
plt.hist(height, bins=bins, color="pink", edgecolor="b")
使用hist()方法绘制直方图,相关参数有color:线的颜色,bins:横轴的刻度,edgecolor:边框的线条颜色
- 增加标题
plt.title("身高分布直方图")
使用title()方法为图表增加标题
- 增加横轴名称
plt.xlabel("身高(cm)", verticalalignment="top")
使用xlabel()方法设置横轴名称,参数verticalalignment:设置名称的位置
- 增加纵轴名称
plt.ylabel("人数(个))", rotation=0, horizontalalignment="right")
使用ylabel()方法设置纵轴名称,参数horizontalalignment:设置名称的位置,rotation:设置名称的旋转角度
- 增加刻度
plt.xticks(bins)
使用xticks()方法增加横轴刻度
yticks = np.arange(0, 15)
plt.yticks(yticks)
使用yticks()方法设置纵轴刻度,参数yticks为设置后的刻度
- 直方图不需要图例
- 增加网格线
plt.grid(True,axis="y",alpha=0.2)
使用grid()方法为直方图增加网格线,参数axis:只在纵轴方向上设置网格线,alpha:设置网格线的透明度
- 保存图片
plt.savefig("./身高分布直方图.png")
使用savefig()方法将绘制出的折线图保存为图片,参数为图片的路径+名字
(4)绘图展示
plt.show()
使用show()方法展示绘制出的图形,不添加任何参数
3、最终效果展示
4、折线图的特点
概念:将值标注成点,并将这些点按照某种特定顺序连接起来形成的图称为折线图
应用场景:数据在一个有序的因变量上的变化,它的特点是反映事物随类别变化的趋势,可以清晰展现数据的增减趋势,增减的速率,增减的规律、峰值等特征
优点:
-
- 能够很好的展现沿某个维度的变化趋势
- 能够比较多组数据在同一个维度上的趋势
- 适合展现较大的数据集
缺点:
-
- 每张图上不适合展现较多的折线图
以上是关于matplotlib:直方图的绘制的主要内容,如果未能解决你的问题,请参考以下文章
使用 matplotlib 和 pandas 从 csv 文件中绘制直方图
如何用matplotlib ArtistAnimation绘制直方图或条形动画?