设置图例

首先需要给每条线添加一个label,然后使用legend函数设置图例

month = np.arange(1, 13)
cost = np.random.randint(10,1000,12,int) # 12个月的支出
income = np.random.randint(0,1000,12,int) # 12个月的收入
plt.xticks(month,['%d月'%i for i in month]) # x轴会自动只显示偶数刻度,所以要让他全部显示1-12
plt.plot(month, cost,label='支出') # 设置第一条线的标签名称label
plt.plot(month,income,label='收入')
plt.legend() # 图例使用默认位置(自动找到空位显示),名称使用每条线的label
plt.show()

Matplotlib绘图第七关--设置坐标轴的刻度xticks、yticks_取整

还可以指定图例的位置,使用 loc属性

Matplotlib绘图第七关--设置坐标轴的刻度xticks、yticks_取整_02

plt.legend(loc='lower left')

在上图的基础上,设置图例显示位置在左下角

Matplotlib绘图第七关--设置坐标轴的刻度xticks、yticks_图例_03

当然,最好使用默认位置,这样Matplotlib会自动找到合适的位置显示图例,防止覆盖线条

设置线条数据值

plt.text(x, y, s, fontsize, verticalalignment,
horizontalalignment,rotation , kwargs)

(1)x,y:标签添加的位置,注释文本内容所在位置的横/纵坐标,默认是根据坐标轴的数据来度量的,是绝对值,也就是说图中点所在位置的对应的值,特别的,如果你要变换坐标系的话,要用到transform=ax.transAxes参数。(2)s:标签的符号,字符串格式,比如你想加个“我爱python”,更多的是你标注跟数据有关的主体。 (3)fontsize:加标签字体大小,取整数。 (4)verticalalignment:垂直对齐方式 ,可选 ‘center’ ,‘top’ , ‘bottom’,‘baseline’ 等 (5)horizontalalignment:水平对齐方式 ,可以填 ‘center’ , ‘right’ ,‘left’ 等 (6)rotation:标签的旋转角度,以逆时针计算,取整 (7)family :设置字体 (8)style: 设置字体的风格 (9)weight:设置字体的粗细 (10) bbox:给字体添加框, 如 bbox=dict(facecolor=‘red’, alpha=0.5) 等。 (11)string:注释文本内容 (12)color:注释文本内容的字体颜色

一般使用

month = np.arange(1, 13)
cost = np.random.randint(10,1000,12,int) # 12个月的支出

plt.plot(month, cost)
plt.text(6,200,s='支出曲线',ha='right')
plt.show()

Matplotlib绘图第七关--设置坐标轴的刻度xticks、yticks_图例_04

显示每个点的值

month = np.arange(1, 13)
cost = np.random.randint(10,1000,12,int) # 12个月的支出

plt.plot(month, cost)
# 将month的每一个值与cost的每个值一一对应
for x, y in zip(month, cost):
    plt.text(x,y,y,fontdict=dict(fontsize=14),ha='center',va='bottom')
plt.show()

Matplotlib绘图第七关--设置坐标轴的刻度xticks、yticks_图例_05

运用在柱状图中,显示每个柱体的高度

month = np.arange(1, 13)
cost = np.random.randint(10,1000,12,int) # 12个月的支出

plt.bar(month, cost)
# 将month的每一个值与cost的每个值一一对应
for x, y in zip(month, cost):
    plt.text(x,y,y,fontdict=dict(fontsize=14),ha='center',va='bottom')
plt.show()

Matplotlib绘图第七关--设置坐标轴的刻度xticks、yticks_图例_06