介绍matplotlib绘图基础结构,绘图基础流程,以及绘图通用属性设置。
刚开始接触python matplotlib绘图的朋友可能对figure,axes,axis等等名词感到迷糊,到底什么对应什么,弄不清怎么才能绘制出自己满意的图形结构,那么借用官方提供的一张图,可以清晰的展现一个完整的图片的层次结构。
首先声明,本文是为了助于大家理解绘图的结构,所以会用一些粗浅的比喻,尽量避免让人迷惑的专业词汇。所以这篇文章会非常的:unprofessional。
一、 Figure结构
- 首先找到位于左下角的“Figure”,这一整张图形,就是一个Figure,Figure包含了全部,可以想象成你画画的桌子
- “Figure”右边不远,有一个Axes,每一个Axes都是一张用来画画的纸,这些纸可以铺在桌子上的任何位置,也可以叠起来,一张压着一张,随你怎么摆放
- 除此之外,这张图圈起来的其他所有属性,都是建立在Axes之上的,也就是在画纸上进行的。
那么在理解了绘制一个Figure的要素之后,就可以顺着这个流程来绘图了。
二、绘图流程
建立Figure
1
2import matplotlib.pyplot as plt
fig = plt.figure(figsize=(12,8))#12,8为图片长宽建立Axes
2.1 这一步有很多方法,比如最常见的,通常也是比较便捷的,像制定表格一样,指明摆放几行几列(顺序为从上到下从左到右)的画纸:
1
2
3
4ax1 = fig.add_subplot(221)#2行2列第一个位置
ax2 = fig.add_subplot(222)#2行2列第一个位置
ax3 = fig.add_subplot(223)#2行2列第一个位置
ax4 = fig.add_subplot(224)#2行2列第4个位置2.2 第二种方法更加灵活自由,但是需要自己指定精确的坐标位置(这是我最喜欢的一种方法,虽然比较麻烦,但是灵活呀)
1
ax = fig.add_axes([0.1, 0.2, 0.3, 0.4])#在figure中x=0.1,y=0.2的位置,建立一个长0.3宽0.4的Axes
调用相应的绘图函数绘制图层,比如折线图里的折线,散点图里的散点,填色图里的色斑等等,这部分不在这里细讲
设置Axes属性,图题,坐标标签,图例,等等
三、通用属性设置
通用属性,指的是绘图对象均可设置的属性,比如说透明度alpha,标签可以设置透明度,折线可以设置透明度,图例也可以设置透明度,这就属于通用属性,通用指的是对Artist的通用,总之,你在Axes上看到的一切,都姑且可以当做Artist来对待。
Artist通用属性 | 作用 |
---|---|
alpha | 透明度,0为透明,1为不透明 |
clip_box | 裁剪框 |
clip_on | 是否裁剪 |
clip_path | 裁剪路径 |
label | 文本标签 |
transform | 坐标转换(绘制带地图投影的图形需要) |
visible | 是否可见/隐藏(通常用于隐藏Spines,也就是隐藏掉边框) |
zorder | 绘图顺序(用于设置多图层的绘图顺序,比如先填色,再打点,再加图例) |
最常用的alpha,label,transform,visible,zorder。
四、图像核心要素设置
4.1 与坐标轴有关的设置
设置x,y轴范围
1
2ax1.set_xlim(x1, x2)
ax1.set_ylim(y1, y2)设置刻度及标签
1
2
3#将x轴1,2,3,4对应位置标签改为a,b,c,d。y轴同理,x->y即可
ax1.set_xticks([1,2,3,4])
ax1.set_xticklabels(['a','b','c','d'])
设置坐标轴不显示,这里就展示到了刚刚通用属性的用法
1
2ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)4.设置坐标轴名称
1
2ax.set_xlabel('x axis')
ax.set_ylabel('y axis')
4.2 常用属性设置(颜色,线性,标记符号)
颜色 | 代码 | 线型 | 代码 | 标记 | 代码 |
---|---|---|---|---|---|
蓝 | ‘b’ | 实线 | ‘-’ | 点 | ‘.’ |
绿 | ‘g’ | 虚线 | ‘–’ | x | ‘x’ |
红 | ‘r’ | 虚点 | ‘-.’ | 圆圈 | ‘o’ |
青 | ‘c’ | 点线 | ‘:’ | 三角 | ‘v’ |
紫 | ‘p’ | 方块 | ‘s’ | ||
黄 | ‘y’ | 星 | ‘*’ | ||
黑 | ‘k’ | 加号 | ‘+’ | ||
白 | ‘w’ | 菱形 | ‘D’ |
使用很简单,以最基础的plot函数为例:
1 | ax.plot(x,y, color='k', linestyle='-', alpha=0.3) |
甚至可以将color=’k’, linestyle=’-‘缩写为’-k’
4.3 标题
1 | ax.set_title('abc') |
标题的设置同样也可以添加一些参数:
loc: {‘center’, ‘left’, ‘right’},设置标题显示的位置
pad: 设置标题距离图像上边缘距离
fontsize: 设置字体大小
color: 设置字体颜色
五、示例
这边给一个完整的示例,将上面的要素尽量融合(由matplotlib官方例子改编)。
1 | #生成绘图数据部分,跳过即可 |
添加属性部分去掉任何一句话都不影响脚本的正确性,因此大家可以尝试逐句注释,来看看每句话控制着那些要素。