个人网站:山海同行
网站地址:https://shanhaigo.cn/
本篇地址:https://shanhaigo.cn/courseContent/121871481879555932160
接上篇,实现了自定义点和线的样式,但是图中表达的x轴、y轴不是很详细,接下来有Matplotlib小伙伴给大家慢慢完善描述信息,达到看图识意!
一、添加刻度
现在我们画的图是北京2024年平均天气,x轴应该是月份,y轴应该是温度,这样我们知道每个月对应的温度趋势。如何添加呢?
Matplotlib给出了x、y的刻度接口,我们要做的就是把刻度信息给到Matplotlib小伙伴就行:
plt.xticks(x, **kwargs)
x:要显示的刻度值
plt.yticks(y, **kwargs)
y:要显示的刻度值
比如,这次我把12月的月份和对应的温度数据,给到Matplotlib就可以实现:
# 刻度
# 月份刻度
x_ticks_label = ["{}月".format(i) for i in range(1, 13)]
# 温度刻度
y_ticks_label = ["{}℃".format(i) for i in y_data]
# 刻度赋值
plt.xticks(x_data, x_ticks_label)
plt.yticks(y_data, y_ticks_label)
中文刻度显示问题,有的图表中文不显示
解决方法如下:
from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False
二、添加网格
为了更好的辅助x轴和y轴的对应关系,添加网格
网格语法如下:
grid(color = 'color', linestyle = 'linestyle', linewidth = number)
参数说明:
color:‘b’ 蓝色,‘m’ 洋红色,‘g’ 绿色,‘y’ 黄色,‘r’ 红色,‘k’ 黑色,‘w’ 白色,‘c’ 青绿色,‘#008000’ RGB 颜色符串。
linestyle:‘‐’ 实线,‘‐‐’ 破折线,‘‐.’ 点划线,‘:’ 虚线。
linewidth:设置线的宽度,可以设置一个数字。
举例:
# 网格
# 默认True:显示网格,虚线,透明度为0.5
plt.grid(True, linestyle='--', alpha=0.5)
三、添加轴上描述
添加x轴和y轴的描述信息
# 轴描述
plt.xlabel("月份")
plt.ylabel("温度")
四、添加图的标题
为整张图添加标题
# 图标题
plt.title("北京2024年平均天气")
五、添加图例
添加图例前,我们需要另一组数据,同一张表中进行区分
添加深圳温度天气
# 深圳2024年平均天气
# 十二个月
sz_x_data = [i for i in range(1, 13)]
# 每个月平均温度
sz_y_data = [19, 22, 26, 27, 28, 28, 28, 28, 27, 25, 22, 20]
# 深圳折线图
plt.plot(sz_x_data, sz_y_data, 'o:g')
接下来进行添加图例
# 图例
plt.legend(["北京", "深圳"], loc='best')
loc参数值如下:
字符串 | 编码 |
---|---|
‘best’ | 0 |
‘upper right’ | 1 |
‘upper left’ | 2 |
‘lower left’ | 3 |
‘lower right’ | 4 |
‘right’ | 5 |
‘center left’ | 6 |
‘center right’ | 7 |
‘lower center’ | 8 |
‘upper center’ | 9 |
‘center’ | 10 |
完整代码如下
import matplotlib.pyplot as plt
from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False
# 画图背景切换
plt.switch_backend('TkAgg')
# 北京2024年平均天气
# 十二个月
x_data = [i for i in range(1, 13)]
# 每个月平均温度
y_data = [-4, -4, 5, 10, 18, 23, 25, 25, 20, 10, 2, -4]
# 深圳2024年平均天气
# 十二个月
sz_x_data = [i for i in range(1, 13)]
# 每个月平均温度
sz_y_data = [19, 22, 26, 27, 28, 28, 28, 28, 27, 25, 22, 20]
# 画布
plt.figure(figsize=(15, 7), dpi=100)
# 绘制折线图
# 实心圆
plt.plot(x_data, y_data)
# 深圳折线图
plt.plot(sz_x_data, sz_y_data, 'o:g')
# 刻度
# 月份刻度
x_ticks_label = ["{}月".format(i) for i in range(1, 13)]
# 温度刻度
y_ticks_label = ["{}℃".format(i) for i in y_data]
# 刻度赋值
plt.xticks(x_data, x_ticks_label)
plt.yticks(y_data, y_ticks_label)
# 网格
# 默认True:显示网格,虚线,透明度为0.5
plt.grid(True, linestyle='--', alpha=0.5)
# 轴描述
plt.xlabel("月份")
plt.ylabel("温度")
# 图标题
plt.title("北京2024年平均天气")
# 图例
plt.legend(["北京", "深圳"], loc='best')
# 生成图片
plt.show()