matplotlib 绘图教程,设置标签与图例
⼤家好,欢迎⼤家阅读周四数据处理专题,我们继续介绍matplotlib 作图⼯具。
在上⼀篇⽂章当中我们介绍了matplotlib 这个包当中颜⾊、标记和线条这三种画图的设置,今天我们同样也介绍三种新的设置。分别是标题、轴标签以及图例,这三个内容也是⾮常实⽤并且常⽤的。颜⾊、线条、标记这些设置的是图像本⾝的⼀些属性,⽽标题、轴标签这些数据是额外提供的补充数据,所以这两者的内在逻辑是不同的。
和⼀样,图像的标题也很重要,它直接告诉我们这幅图表达的内容。举个例⼦来说你画了logistics 的函数图像,但是给了⼀个外⾏⼈(⽐如⽼板)看,他是⽆论怎样也看不出来这究竟是什么意思的。所以我们需要标题,告诉看这幅图的⼈,这幅图到底画了⼀些什么数据。设置标题的⽅法很简单,如果我们就只有⼀幅图画的话,直接通过plt.title 来设置即可。
通过plt 设置title ⾮常⽅便,也是我们最常⽤的设置⽅法。但是对于多个⼦图的场景,我们就不能通过plt 来设置title 了,⽽是希望对于每⼀个⼦图都能够设置⼀个单独的title 。
我们看⼀个之前的例⼦,我们之前⽤下⾯这段代码同时画出了两个图像:
fig = plt.figure()
ax1 = fig.add_subplot(2, 1, 1)
ax2 = fig.add_subplot(2, 1, 2)
ax1.plot(range(10))
ax2.plot(x, y)
plt.show()
这⾥的每⼀个ax 都是⼀个subplot 的对象,也就代表着每⼀个⼦图。所以我们要为⼦图设置title 的话,那么显然应该通过subplot 对象,也就是操作这⾥的ax 变量来进⾏。这⾥我们⽤到的api 不再是title ,⽽是set_title 。我也不知道为什么要起不⼀样的名字,可能是为了区分吧。我们把set_title 的逻辑加上之后,得到的图像是这样的:
这⾥有⼀个⼩⼩的问题是两个图挨得太近了,导致logistic 的标题和上⼀幅图的坐标轴重叠了。这个也很简单,我们可以通过subplots_adjust 设置让⼦图之间分开⼀些。
通过这个设置我们可以控制这些⼦图距离左右边界以及彼此之间的间隙,我们可以设置成plt.subplots_adjust(hspace=0.5),表⽰⼦图之间的间距是0.5英⼨。这样我们得到的结果如下:
title
参数设置标题
传⼊⼀个字符串作为标题,这个只是最基本的设置,其实标题还有很多参数可以diy。但⼀般不太常⽤,因为标题有和没有的区别⽐较⼤,是斜体还是正常体的区别很⼩,所以这些内容的边际收益很⼩。但我们还是要介绍⼀下的,⾄少需要有⼀个印象,以后如果要⽤的时候才能想的起来。
title⼀共有9种参数,分别是fontsize字体⼤⼩,fontweight字体粗细,fontsytle字体风格,verticalalignment竖直对齐⽅式,horizontalalignment⽔平对齐⽅式,rotation旋转⾓度,alpha透明度,backgroundcolor背景颜⾊和bbox外框。
我们⼀个⼀个来简单说下它们接收的参数:
1. fontsize字体⼤⼩,我们可以输⼊⼀个数字来代表字体的⼤⼩,默认是12。也可以输⼊⼀个字符串,选择字符串的话只有['xx-small', 'x-small',
'small', 'medium', 'large','x-large', 'xx-large']这么⼏种。看起来它的逻辑和我们买⾐服的尺码是⼀样的。
2. fontweight字体粗细,⼀般常⽤的选项有:['light', 'normal', 'medium', 'semibold', 'bold', 'heavy', 'black']。这些我们顾名思义就可以猜得出来每个
选项代表什么意思。⽐如bold就是加粗,semibold是半加粗,heavy是重加粗,black就是全⿊了。
3. verticalalignment竖直对齐⽅式的参数是这么⼏种:'center' , 'top' , 'bottom' ,'baseline' ,这个参数⽤得不多。
4. horizontalalignment⽔平对齐⽅式的参数是[left,right,center],和我们⽇常在word⾥设置是⼀样的。这个⽐上⾯那个⽤得频率⾼⼀些。
5. rotation旋转⾓度,我们可以传⼊⼀个数字代表旋转的⾓度,也可以传⼊vertical,horizontal 来表⽰我们想要旋转的效果。
6. alpha透明度,参数在0到1之间。
7. backgroundcolor背景颜⾊,也没什么好说的。
8. bbox背景框,背景框虽然只是⼀个参数,但是它是由好⼏个参数组合形成的。⽐如facecolor背景颜⾊,edgecolor线条颜⾊,boxstyle⽅框外
形,edgewidth线条粗细。
我们把这些参数都⽤起来给⼤家看⼀个组合例⼦:
轴标签
轴标签顾名思义,就是在坐标轴上加上标签,告诉⼤家这个坐标轴代表的含义。⽐如我们画的⽉份销量图,我们的横坐标是每年的⽉份,纵坐标是当⽉的销量。如果不标出来看图的⼈很难知道这个轴代表的含义,可能会理解错。所以我们可以给坐标轴加上轴标签,让⼤家⼀眼就看得出来,这个轴代表的含义。
加上轴标签的⽅法也⾮常简单,和刚才添加title的⽅式基本⼀样,⽤xlabel设置x轴标签,⽤ylabel设置y轴标签。⽐如这样:
如果是多个⼦图,我们同样操作subplot这个对象来进⾏设置。
设置图例
下⾯来介绍⼀下设置图例,图例这个翻译不是很好,但是也不到更精准的翻译了。图例的使⽤场景是我们将多个曲线画在同⼀张画布上的时候,这时候为了区分每⼀个颜⾊的图像代表的含义,我们需要在图像当中标注出来。
我们来看这个例⼦,这个例⼦是我在matplotlib的官⽹到的,它绘制的是x和,函数图像的差别。由于这三张图是画在⼀起的,为了能够让读者分辨出究竟什么颜⾊代表什么函数,所以在左上⾓标上了图例。
我们关注⼀下图像的左上⾓,已经替我们标好了。蓝⾊的是线性图像,也就是x,黄⾊的是x的平⽅,绿⾊的是x的⽴⽅。
matplotlib中subplot那么这个图例是怎么标出来的呢?这⾥需要做两件事,第⼀件事就是在我们通过plot绘制图像的时候需要加上label,表⽰当前画的这个图像到底是什么意思。这个label也就是我们看到左上⾓展⽰图例当中的⽂字。⽐如linear, quadratic之类的就是label。另外⼀个就是在我们调⽤show这个函数之前,需要调⽤⼀下legend这个⽅法,这个⽅法就是绘制图例⽤的。
我们来看下刚才那张图的代码:
x = np.linspace(0, 2, 100)
plt.plot(x, x, label='linear')
plt.plot(x, x**2, label='quadratic')
plt.plot(x, x**3, label='cubic')
plt.xlabel('x label')
plt.ylabel('y label')
plt.title("Simple Plot")
plt.legend()
plt.show()
它在⼦图上的⽤法基本上⼀模⼀样,我们来看个例⼦:
我们可以看到对于ax1这张⼦图来说,我们做的事情和plt是⼀样的,就是在调⽤plot的时候标上了label,然后在show之前调⽤了legend⽅法。
最后来介绍⼀下legend的参数,其实legend有很多参数,我们选择其中⽐较常⽤的⼏个说⼀说。剩下的⼤家可以去查看相关的⽂档,我建议是⽤到的时候再去查,不过也可能⼀直没机会⽤到。
⾸先是loc,loc是location的缩写,顾名思义表⽰图例放置的位置。传⼊的参数表⽰⼀个⽅位,⽐如upper left, lower left, center left等等。上中下分别是upper,center,lower,左中右分别是left, center, right。我们可以⾃由组合这两个⽅位,可以得到9种⽅位,再加上⼀种best,表⽰⾃适配最佳放置位置。
除此之外是常见的⼏个参数,⽐如title,fontsize,edgecolor,shadow和facecolor。这⼏个参数我们根据名字⼤概就猜得出来,有些刚才介绍title的时候讲过了,效果是⼀样的,只不过放置的位置不同⽽已。
除了这些之外还有像是设置图例当中先放缩略图还是先放⽂字的markerfirst,设置散点图中散点数量的scatterpoints。以及⼀些关于间距⽂本长度的设置,这些都不是⾮常常⽤,就不⼀⼀赘述了。
今天的⽂章到这⾥就结束了,如果喜欢本⽂的话,请来⼀波三连,给我⼀点⽀持吧。(关注、转发、点赞)。
本⽂使⽤排版
- END -
{{uploading-image-616067.)}}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。