matplotlib使用
一、matplotlib的构成
matplotlib有三个的API:
- matplotlib.backend_bases.FigureCanvas
- matplotlib.backend_bases.Renderer
- matplotlib.artist.Artist
分别对应绘图区域、渲染器以及图表组件。matplotlib基本原理是,使用图标组件Artist管理调用渲染器Renderer,在绘图区域FigureCanvas内绘图。
1.Artist的分类
Artist包含两部分:
primitives
containers
分别为基本要素与容器,二者关系如下图
二、primitives
primitives 主要依赖几个主要部分:曲线-Line2D,矩形-Rectangle,多边形-Polygon,图像-image。
1.曲线-Line2D主要完成曲线绘制,在整个包中线可以表示连接所有顶点的实线样式,也可以是每个顶点的标记。其主要通过class matplotlib.lines.Line2D函数来实现功能,常用的参数包括:
xdata:需要绘制的line中点的在x轴上的取值,若忽略,则默认为range(1,len(ydata)+1)
ydata:需要绘制的line中点的在y轴上的取值
linewidth:线条的宽度
linestyle:线型
color:线条的颜色
marker:点的标记,详细可参考markers API
markersize:标记的size
绘制直线line
fig, ax= plt.subplots()
lines = [Line2D(np.arange(0, 5), np.arange(0, 5) ** 2), Line2D(np.arange(0, 5), np.arange(0, 5) * 2, color='orange')]
for line in lines:
ax.add_line(line)
ax.set_xlim(0, 4); ax.set_ylim(2, 11)
plt.show()
errorbar专门绘制误差线
x:需要绘制的line中点的在x轴上的取值
y:需要绘制的line中点的在y轴上的取值
yerr:指定y轴水平的误差
xerr:指定x轴水平的误差
fmt:指定折线图中某个点的颜色,形状,线条风格,例如‘co–’
ecolor:指定error bar的颜色
elinewidth:指定error bar的线条宽度
fig = plt.figure()
x = np.arange(10)
y = 2.5 * np.cos(x / 20 * np.pi)
yerr = np.linspace(0.05, 0.2, 10)
plt.errorbar(x, y + 3, yerr=yerr, label='both limits (default)');
plt.show()
2.patches主要用于绘制二维图形。以矩形直方图为例。
matplotlib.pyplot.hist
x: 数据集,最终的直方图将对数据集进行统计
bins: 统计的区间分布
range: tuple, 显示的区间,range在没有给出bins时生效
density: bool,默认为false,显示的是频数统计结果,为True则显示频率统计结果,这里需要注意,频率统计结果=区间数目/(总数*区间宽度),和normed效果一致,官方推荐使用density
histtype: 可选{‘bar’, ‘barstacked’, ‘step’, ‘stepfilled’}之一,默认为bar,推荐使用默认配置,step使用的是梯状,stepfilled则会对梯状内部进行填充,效果与bar类似
align: 可选{‘left’, ‘mid’, ‘right’}之一,默认为’mid’,控制柱状图的水平分布,left或者right,会有部分空白区域,推荐使用默认
log: bool,默认False,即y坐标轴是否选择指数刻度
stacked: bool,默认为False,是否为堆积状图
x=np.random.randint(0,100,100) #生成[0-100)之间的100个数据,即 数据集
bins=np.arange(0,101,10) #设置连续的边界值,即直方图的分布区间[0,10),[10,20)...
plt.hist(x,bins,color='fuchsia',alpha=0.5)#alpha设置透明度,0为完全透明
plt.xlabel('scores')
plt.ylabel('count')
plt.xlim(0,100); #设置x轴分布范围 plt.show()
plt.show()
三、Object container
容器会包含一些primitives,并且容器还有它自身的属性。主要包括figure、axes、axis、tick。figure相当于画布,axes相当于数据与画布适配器,axis相当于轴、刻度绘制器,tick相当于特殊标记添加器。