任务介绍
之前我们完成了画温度变化图,但是实现的相对简单,这次我们可以改进一下
但在改进之前需要学习一下新的知识,画横线和刻度
画横线
pyplot.hlines()用于在图中从xmin到xmax的每个y处绘制水平线。
例如在y=3处画一条横线,x的范围为0到5
import matplotlib.pyplot as plt
plt.hlines(3, 0, 5)
plt.show()
效果如下:
我们可以用来横线来表示平均数
import matplotlib.pyplot as plt
nums1 = [1,3,2,5,4]
plt.plot(nums1,marker='o')
plt.hlines(sum(nums1)/len(nums1), 0, len(nums1), linestyle='dashed', color='green')
plt.show()
效果如下:
设置刻度
pyplot.xticks设置当前x轴刻度位置和标签
例如将x轴的刻度设置为英文形式
plt.xticks([0,1,2,3,4], ['One','Two','Three','Four','Five'])
完整代码:
import matplotlib.pyplot as plt
nums1 = [1,3,2,5,4]
plt.plot(nums1,marker='o')
plt.hlines(sum(nums1)/len(nums1), 0, len(nums1), linestyle='dashed', color='green')
plt.xticks([0,1,2,3,4], ['One','Two','Three','Four','Five'])
plt.show()
效果如下:
带日期的温度记录文件
学习了以上的新知识,我们就可以用来改进我们的温度变化图
首先将txt中的内容改为一下内容:
Day1 37
Day2 36
Day3 35
Day4 30.5
Day5 32
Day6 38.5
Day7 37
增加x轴刻度标签的解析
由于一行数据表示两个内容,第一个是第几天,第二个是温度,因此我们需要先用split函数将字符串分割,再分别存到数组ticks和数组nums中
nums=[]
ticks=[]
for l in lines:
sp = l.split()
ticks.append(sp[0])
n = float(sp[1])
nums.append(n)
print(nums)
然后用nums画折线图和平均温度的横线,用ticks设置x轴刻度
完整代码
import tkinter
import tkinter.filedialog
import matplotlib.pyplot as plt
fn = tkinter.filedialog.askopenfilename(filetypes=[('TXT', '.txt')])
print(fn)
with open(fn) as f:
lines = f.readlines()
print(lines)
nums=[]
ticks=[]
for l in lines:
sp = l.split()
ticks.append(sp[0])
n = float(sp[1])
nums.append(n)
print(nums)
plt.plot(nums, marker='o')
plt.hlines(sum(nums)/len(nums), 0, len(nums), linestyle='dashed', color='green')
plt.xticks(range(0,len(ticks)), ticks)
plt.show()
效果如下: