版权声明:转载请注明来源及作者,谢谢! https://blog.csdn.net/qq_42442369/article/details/84109275
需求:
- 绘制10点到12点每分钟的气温变化情况
难点:
- x轴y轴刻度表示问题
- 中文显示失败问题
- 图片保存本地失败问题
终图:
第一部分代码如下:
# 引入matplotlib下的pyplot模块
import matplotlib.pyplot as plt
import random
import matplotlib
# x轴设为时间,步长为2
x = range(2,26,2)
# y轴设为采集到的温度值
y = [15,13,14.5,17,20,25,26,26,27,22,18,15]
# 图形修饰1: 调节图形大小,三个参数分别是:长,宽,清晰度;20小了,建议80
# 注意: 一定要在联立之前设置figsize,清晰度调节的清晰一些,长宽不用怎么调节
plt.figure(figsize = (20, 8), dpi = 80)
# 调用plot方法,联立xy轴
plt.plot(x,y)
# 图形修饰2: 设置x轴的刻度*(为了考虑刻度的稀疏程度)
# 注意: 为了进一步考虑到小数如果刻度需要获得小数的,就需要用列表推导式
_xticks_labels = [i/2 for i in range(4,50)] # 奇数也除以2了
plt.xticks(_xticks_labels)
# 设置y轴的刻度,直接规定最大值和最小值
plt.yticks(range(min(y),max(y)+1)) # 记住得加range()你取得是最大值最小值
# 保存图片到本地(但我最开始的保存为空白图片,因为最开始在savefig在show()后面)
plt.savefig('C:/Users/shuol/Desktop/t6.jpg')
# 注意: 如果不保存到本地,可以直接点击图片右键操作,如果是IDLE或者pycharm还可以在弹出的图片上进行直接修饰,具体大家可以试一下。
# 显示图像
plt.show()
第二部分代码如下:
# 引入matplotlib下的pyplot模块
import matplotlib.pyplot as plt
import random
import matplotlib
# 需求: 120分钟每分钟与20到35度中任选的一个度数关联,呈现在二维图中
# 遇到的纠结问题:刻度显示中文的问题!
# 解决方法,如下两行代码,然后遇到的中文内容前面都加u
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
x = range(1,121)
y = [random.randint(20,35) for i in range(120)]
plt.figure(figsize = (20, 8), dpi = 80)
plt.plot(x, y)
"""
难点:
"""
# 步长取3,让刻度稍微稀疏一点
# _x = list(x)[::3]
# 调整x轴的刻度,希望表示为汉字具体时间
# 注意,xticks方法的第一个参数是数值,第二个参数是字符串,必须严格一一对应
# 注意totation 90度
# 设置第二个参数
_xticks_labels = [u'10点{}分'.format(i) for i in range(60)] # 把时间区分开,用两个60,第二个变量用+=;中文还需要内容前面加u
_xticks_labels += [u'11点{}分'.format(i) for i in range(60)]
plt.xticks(list(x)[::3],_xticks_labels[::3], rotation = 45)
# 添加描述性信息
plt.xlabel(u'时间')
plt.ylabel(u'温度 单位(℃)')
plt.title(u'10点到12点每分钟的气温变化情况')
# 显示图像
plt.show()