折线图01[时间2020年2月]
1. 需求
观察2020年1月份北京市的气温变化
2. 数据准备
3.折线图的用途及特定。
折线图中,数据是递增还是递减、增减的速率、增减的规律(周期性、螺旋性等)、峰值等特征都可以清晰地反映出来。折线图的特点是反映事物在一段时间内的趋势。
4. 绘制折线图
#导入包
from getData import demo01 #爬取2345爬虫的包
from matplotlib import pyplot as plt
import numpy as np
#提取数据,设置x轴y轴
x_ticks = np.arange(1,32) #因为1月份有31天,所以设置x轴有31个刻度,y轴数据一一对应
y_temp = demo01.getWeatherInfo('202001','54511')[1]
y_temp = list(map(int,y_temp)) #正则后的数字带有引号,这里转换成数字
#绘制图形
plt.plot(x_ticks,y_temp)
#展示图形
plt.show()
4. 图形优化
在上面,我们已经把图形画出来了,但是暂时效果不好,让人看不明白,所以我们还要对图形进行优化。
- 设置图片大小
#设置图片大小
plt.figure(figsize=(20,8),dpi=80) #dpi 每个点上的像素个数
- 设置x轴显示(这个时候我们会发现中文显示不出来,这里提供mac版的方法)
#设置x轴展示 fontproperties 设置中文显示
_x_ticks = ["01月{}日".format(i) for i in x_ticks]
plt.xticks(x_ticks,_x_ticks,rotation=-90,fontproperties=my_font) #两个数组要一对一
- 设置中文显示(Mac版)
from matplotlib import font_manager
#实例化 FontProperties 字体路径,用fc-list查看 fc-list :lang=zh查看中文显示
my_font=font_manager.FontProperties(fname="/System/Library/Fonts/PingFang.ttc")
- 设置y轴
#设置y轴显示 因为range左闭右开,所以+1,保证取到数组所有的数
_y_ticks = ["{}℃".format(i) for i in range(min(y_temp),max(y_temp)+1)]
plt.yticks(range(min(y_temp),max(y_temp)+1),_y_ticks)
- 添加注释
#添加注释
plt.xlabel("时间",fontproperties=my_font)
plt.ylabel("温度 单位(摄氏度 )",fontproperties=my_font)
plt.title("北京市2020年1月份最高温度",fontproperties=my_font)
完整代码
'''
Created on Feb 11, 2020
@author: sun
'''
#导入包
from getData import demo01 #爬取2345爬虫的包
from matplotlib import pyplot as plt
import numpy as np
from matplotlib import font_manager
#绘制北京是一周的天气情况
#实例话 FontProperties 字体路径,用fc-list查看
my_font=font_manager.FontProperties(fname="/System/Library/Fonts/PingFang.ttc")
#获取x轴 y轴的数据
x_ticks = np.arange(1,32)#因为1月份有31天,所以设置x轴有31个刻度,y轴数据一一对应
y_temp = demo01.getWeatherInfo('202001','54511','yWendu')[1]
y_temp = list(map(int,y_temp)) #正则后的数字带有引号,这里转换成数字
#设置图片大小
plt.figure(figsize=(20,10),dpi=80)
#绘制图形
plt.plot(x_ticks,y_temp)
#设置x轴展示
_x_ticks = ["01月{}日".format(i) for i in x_ticks]
plt.xticks(x_ticks,_x_ticks,rotation=-90,fontproperties=my_font) #两个数组要一对一
#设置y轴显示 因为range左闭右开,所以+1,保证取到数组所有的数
_y_ticks = ["{}℃".format(i) for i in range(min(y_temp),max(y_temp)+1)]
plt.yticks(range(min(y_temp),max(y_temp)+1),_y_ticks)
#添加注释
plt.xlabel("时间",fontproperties=my_font)
plt.ylabel("温度 单位(摄氏度 )",fontproperties=my_font)
plt.title("北京市2020年1月份最高温度",fontproperties=my_font)
#展示图形
plt.show()