导航菜单
首页 » 问答 » 正文

Matplotlib入门-4-plt.legend( )创建图例

对于数据可视化而言,为了能够让可视化结果更加清晰直观,常常会对视图中的不同数据进行标注,也就是图例展示。告知用户,可视化结果中呈现的线条、图样等,用以指代何种数据。

直接用 中与坐标轴相关的常用操作 中的代码进行演示、学习。

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
n = np.linspace(-5, 4, 30)
m1 = 3 * n + 2
m2 = n ** 2
plt.plot(n, m1, color='r', linewidth=1.5, linestyle='-')
plt.plot(n, m2, 'b')
plt.xlabel('时间')
plt.ylabel('心情')
plt.show()

假设上图中,蓝色线代表男生购物欲望,红色线代表女生购物欲望(瞎编的= =|||)

那么可以通过如下代码进行图例创建

(1)采用plt.( )默认参数

第一步:给plt.plot( )中参数label=''传入字符串类型的值,也就是图例的名称

第二步:使用plt.( )使上述代码产生效果

直接上代码上图

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
n = np.linspace(-5, 4, 30)
m1 = 3 * n + 2
m2 = n ** 2
plt.xlabel('时间')
plt.ylabel('心情')
plt.plot(n, m1, color='r', linewidth=1.5, linestyle='-', label='女生购物欲望')
plt.plot(n, m2, 'b', label='男生购物欲望')
plt.legend()
plt.show()

(2)向plt.( )中设置参数,进行个性化图例定制

plt.( )中有、和loc三个参数,其中:

需要传入你所画线条的实例对象,这个我也解释不清楚......

是图例的名称(能够覆盖在plt.plot( )中label参数值)

loc代表了图例在整个坐标轴平面中的位置(一般选取'best'这个参数值)

注:loc这个参数的能传入的值和方式方法较多,最后进行总结

直接上代码上图

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
n = np.linspace(-5, 4, 30)
m1 = 3 * n + 2
m2 = n ** 2
plt.xlabel('时间')
plt.ylabel('心情')
line1, = plt.plot(n, m1, color='r', linewidth=1.5, linestyle='-', label='女生购物欲望')
line2, = plt.plot(n, m2, 'b', label='男生购物欲望')
plt.legend(handles=[line1, line2], labels=['girl购物欲望','boy购物欲望'], loc='best')
plt.show()

上述代码中,可以看到,若要plt.( )中的参数要想获取线条图像的实例,必须要用类似于 line1, = plt.plot( ) 这种写法

稍作解释,plt.plot( )返回的是一个二元组值,若要获取实例,必须用x, = plt.plot( )才能取出来实例对象。还有,和传入的值必须一一对应,要不然图例就乱了。

对于plt.( )的参数loc,我有话说

loc用以控制图例在整个坐标平面的位置

第一种:loc = 'best'

图例自动‘安家’在一个坐标面内的数据图表最少的位置

第二种:loc = 'XXX'

这里的'XXX'代表了坐标面中的九个位置,例如loc = ''表示坐标平面中心位置,九种参数值及所对应位置如下图所示

第三种:loc = (x, y)

(x, y)表示图例左下角的位置,这是最灵活的一种放置图例的方法,慢慢调整,总会找到你想要的放置图例的位置

在第三种情况中要注意以下细节:

这里首先要感谢 驿路向北: 到底该如何控制的位置? 的文章,让我醍醐灌顶!终于弄明白了通过loc = (x, y)怎样确定图例位置。

当使用loc = (x, y)时,x, y并不是轴域中实际的x, y的值,而是将x轴, y轴分别看成1, 即:

( x/(x_max-x_min) , y/(y_max-y_min) )(即进行归一化处理);

那么,在绘制图表时,若用到坐标轴的范围限制,如xlim=(0, 16), ylim=(0, 9)。在此基础上,如果要将图例放置到点(2, 2)上,loc实际传入的参数应该为:

loc = ( 2/(16-0) , 2/(9-0) )

即 loc = (2/16, 2/9)

以上的各种参数,请大家自行尝试,不再另附代码,要不然大家没动力,haha~

再次感谢驿路向北 !!!

好啦,今天到此为止~下课

拿走不谢,但是别忘了关注,点赞哦~~~

评论(0)

二维码