携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第22天,点击查看活动详情
1. 完善原始折线图
为了更好的理解所有基础绘图功能,我们通过天气温度变化的案例绘图来融合Matplotlib库中所有的基础API使用
案例需求:请绘制出某城市11点到12点时段内,每分钟的温度变化折线图,大致温度范围在15℃-18℃之间。
1.1 准备数据并画出初始折线图
首先,结合上一篇文章的内容,我们实现一下基础绘图功能,主要分为三大步骤:
- 创建画布
- 绘制图像
- 显示图像
import random
import matplotlib.pyplot as plt
# 0. 准备x,y坐标的数据
x = range(60)
y = [random.uniform(15, 18) for i in x] # 列表生成式
# 1. 创建画布
plt.figure(figsize=(20, 8), dpi=100)
# 2. 绘制折线图
plt.plot(x, y)
# 3. 显示图像
plt.show()
运行结果如下图所示:代码中,我们通过可随机数生成了15-18之间的数据,使用了列表生成式,生成了60个数据,并且绘制出图像。
1.2 添加自定义x,y刻度
- plt.xticks(x, **kwargs)
- x要显示的刻度值
- plt.yticks(y, **kwargs)
- y要显示的刻度值
- 括号中添加数据的时候,如果是数字,是可以直接可以写进来的。如果是字符串,需要经过替换:现由数字写成对应内容,然后再由字符串进行替换。
具体代码演示如下所示:在第二步骤:绘制折线图的下方,添加如下代码。
我们要求x坐标轴显示几点几分。
注意:坐标刻度不可以直接通过字符串进行修改刻度。
# 2.1 添加x,y轴刻度
# 设置x,y轴刻度
x_ticks_label = ["11点{}分".format(i) for i in x]
y_ticks = range(40)
# 修改x,y轴坐标刻度显示
plt.xticks(x[::5], x_ticks_label[::5]) # 坐标刻度不可以直接通过字符串进行修改
plt.yticks(y_ticks[::5]) # 从头到尾间隔5个来切分
1.3 中文显示问题解决
在Python脚本中动态设置matplotlibrc,这样也可以避免由于更改配置文件而造成的麻烦,具体代码如下所示:
from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
有时候,字体更改后,会导致坐标轴中的部分字符无法正常显示,此时需要更改axes.unicode_minus参数,请继续添加如下代码:
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False
代码运行结果如下图所示:可以发现中文能够正常显示了,并且x,y轴刻度从0开始,间隔为5。并且x轴刻度以几点几分来显示的。