Python教程 - 改进温度折线图

任务介绍

之前我们完成了画温度变化图,但是实现的相对简单,这次我们可以改进一下
但在改进之前需要学习一下新的知识,画横线和刻度

画横线

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()

效果如下:

posted @ 2022-09-03 13:31  hgrun  阅读(351)  评论(0编辑  收藏  举报