第二章 Matplotlib相关知识 —— 绘图
文章目录
- Python 数据分析——Matplotlib相关知识
- 前言
- 一、Artist的两种类型
- 二、Primitive -- 基本元素
- 1.曲线-Line2D
- 1.1 三种设置Line2D的属性
- 1.2 绘制lines
- 2.patches
- 2.1. Rectangle-矩形
- 总结
前言
这次主要是从Artist的两种类型:primitives 和containers入手,学习了解基本的绘图以及绘图模板
一、Artist的两种类型
-
primitive是基本要素,它包含一些我们要在绘图区作图用到的标准图形对象,如曲线Line2D,文字text,矩形Rectangle,图像image等。
-
container是容器,即用来装基本要素的地方,包括图形figure、坐标系Axes和坐标轴Axis。他们之间的关系如下图所示:
primitives 的几种类型:曲线-Line2D,矩形-Rectangle,多边形-Polygon,图像-image
1.曲线-Line2D常用的的参数有:
1.1 三种设置Line2D的属性xdata: 需要绘制的line中点的在x轴上的取值,若忽略,则默认为range(1,len(ydata)+1)
ydata: 需要绘制的line中点的在y轴上的取值
linewidth: 线条的宽度
linestyle: 线型
color: 线条的颜色
marker: 点的标记
markersize: 标记的size
- 初始化x,y
x = range(0,10) y = [random.randint(0,25) for _ in range(10)]
a. 直接在plot()函数中设置
plt.plot(x,y, linewidth=2);
b. 通过获得线对象,对线对象进行设置
line, = plt.plot(x, y, '-') line.set_antialiased(False);
c. 获得线属性,使用setp()函数设置
lines = plt.plot(x, y) plt.setp(lines, color='b', linewidth=2);
1.2 绘制lines
- 初始化x,y1,y2
x = range(0,5) y1 = [2,5,7,8,10] y2= [3,6,8,9,11]
两种绘制直线line常用的方法:
a. plot方法绘制
fig,ax= plt.subplots() ax.plot(x,y1,color = 'red') ax.plot(x,y2) print(ax.lines);
b. Line2D对象绘制
fig,ax= plt.subplots()
lines = [Line2D(x, y1), Line2D(x, y2,color='red')]
for line in lines:
ax.add_line(line)
ax.set_xlim(0,4)
ax.set_ylim(2, 11);
2.patches 2.1. Rectangle-矩形
a. 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)
bins=np.arange(0,101,10)
plt.hist(x,bins,color='BlueViolet',alpha=0.5)
plt.xlabel('scores')
plt.ylabel('count')
plt.xlim(0,100);
plt.show()
a. bar - 柱状图
- left: x轴的位置序列,一般采用range函数产生一个序列,但是有时候可以是字符串
- height: y轴的数值序列,也就是柱形图的高度,一般就是我们需要展示的数据;
- alpha: 透明度,值越小越透明
- width: 为柱形图的宽度,一般这是为0.8即可;
- color或facecolor: 柱形图填充的颜色;
- edgecolor: 图形边缘颜色
- label: 解释每个图像代表的含义,这个参数是为legend()函数做铺垫的,表示该次bar的标签
- linewidth or linewidths or lw: 边缘or线的宽度
代码
np.arange(16) y = range(1,17) plt.bar(x,y, alpha=0.5, width=0.5, color='yellow', edgecolor='red', lw=2);
总结
暂时先写一半,剩下的后面继续



