假设通过爬虫你获取到了北京2016年3,10月份每天白天的最高气温(分别位于列表a,b),那么此时如何寻找出气温和随时间(天)变化的某种规律?
a = [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23]
b = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,17,10,11,13,12,13,6]
matplotlib能够绘制折线图,散点图,柱状图,直方图,箱线图,饼图等。其中主要应用到的几种图形的描述和特点如下表所示:
在文中我们想要实现的目标是显示天气的变化趋势,因此选择折线图展示数据更为合适。
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import random
x1=range(0,31)
x2=range(31,62)
x1_label=["3月{}日".format(i+1) for i in x1]
x2_label=["10月{}日".format(i-31) for i in (x2)]
#3月的气温值
y1=[11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23]
#10月的气温值
y2=[26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,17,10,11,13,12,13,6]
#设置字体,防止后面图上的中文出现乱码现象
my_font=matplotlib.font_manager.FontProperties(fname=r"C:\Windows\Fonts\方正粗黑宋简体.ttf")
#设置图片大小以及清晰度
plt.figure(figsize=(20,5),dpi=80)
plt.plot(x1,y1,label='三月的气温走势')
plt.plot(x2,y2,label='十月的气温走势')
#设置x轴显示的刻度
plt.xticks(np.arange(1,63)[::4],(x1_label+x2_label)[::4],FontProperties=my_font,rotation=45)
plt.legend(prop=my_font)
plt.title("气温随时间(天)变化趋势图",FontProperties=my_font)
plt.show()
示例(显示3月的最大值点和最小值点)代码如下:
y1_min=np.argmin(y1)
y1_max=np.argmax(y1)
show_min='['+str(y1_min)+' '+str(y1[y1_min])+']'
show_max='['+str(y1_max)+' '+str(y1[y1_max])+']'
# 以●绘制最大值点和最小值点的位置
plt.plot(y1_min,y1[y1_min],'ko')
plt.plot(y1_max,y1[y1_max],'ko')
'''
该函数用以在图上标注文字
plt.annotate(s='str',
xy=(x,y) ,
xytext=(l1,l2) ,
...
)
s:为注释文本内容
xy:为被注释的坐标点
xytext:为注释文字的坐标位置
'''
plt.annotate(show_min,xy=(y1_min,y1[y1_min]),xytext=(y1_min,y1[y1_min]))
plt.annotate(show_max,xy=(y1_max,y1[y1_max]),xytext=(y1_max,y1[y1_max]))
在原来的绘图部分代码处加入以上代码,绘制出的结果如下图所示:
文中用的是黑马程序员的数据分析课程中的实例,如果文中有任何错误的地方,麻烦大家指正,谢谢。