首页 > Python

爬取济南最近30日天气并绘制折线图

今天刚开始学折线图,写一个加深一下记忆,代码都是最简单的了,希望能够有大佬指点指点,总觉得还是有些臃肿.

爬取济南最近30日天气并绘制折线图

import re
import requests
from matplotlib import pyplot as plt
 
 
headers = {
    'Host': 'www.yangshitianqi.com',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0',
}
# 获取济南近30天的最低温和最高温
html = requests.get('https://www.yangshitianqi.com/jinan/30tian.html',
                    headers=headers).text
# 使用正则提取数据
pattern_temperature = r'<div class="fl i3 nz">(\d+~\d+)℃</div>'
pattern_date = r'<div class="t2 nz">(\d\d\.\d\d)</div>'
temperature = re.findall(pattern_temperature, html)
date = re.findall(pattern_date, html)
 
# 整理数据
max_d = [int(i.split('~')[1]) for i in temperature]
min_d = [int(i.split('~')[0]) for i in temperature]
# 近30日最低温和最高温
max_m = max(max_d)
min_m = min(min_d)
# 近30日最低温最高温所处的日期(第几天)
max_m_d = max_d.index(max_m)
min_m_d = min_d.index(min_m)
# 日期
date = [i.split('.')[0] + '月' + i.split('.')[1] + '日' for i in date]
 
# 定义图像质量
plt.figure(figsize=(18.5, 9), dpi=180)
 
# 解决中文乱码
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
 
# 绘制图像
plt.plot(range(30), max_d, linestyle=':')
plt.plot(range(30), min_d, linestyle=':')
 
# 显示日期
plt.xticks(range(30), date, rotation=315)
 
# xy轴标识
plt.xlabel('日期', size=18)
plt.ylabel('温度/℃', size=18)
plt.title('近30日天气情况', size=36)
 
# 标记最高温和最低温
plt.text(
    # x轴坐标
    max_m_d,
    # y轴坐标
    max_m + 1,
    # 文字
    f'最高温,{max_m}℃',
    # 字体大小
    fontsize=16,
    # 文字颜色
    color='red',
    # 相对位置-水平
    ha='center',
    # 相对位置-垂直
    va='center',
    # 透明度
    alpha=1
)
plt.text(
    # x轴坐标
    min_m_d,
    # y轴坐标
    min_m - 1,
    # 文字
    f'最低温,{min_m}℃',
    # 字体大小
    fontsize=16,
    # 文字颜色
    color='blue',
    # 相对位置-水平
    ha='center',
    # 相对位置-垂直
    va='center',
    # 透明度
    alpha=1
)
 
# 显示网格
plt.grid(axis='y', alpha=0.2)
plt.savefig('a.png')
plt.show()


本文由用户 【马东东】 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。

转载本站原创文章,请注明出处,并保留原始链接、图片水印。

本站是一个以用户分享为主的开源技术平台,欢迎各类分享!

本文地址:http://www.mj85.com/python/180.html

分享:

评论 [共0条评论]

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~

您现面为匿名用户,暂不能发表评论。如想评论则请登录注册

相关内容

发布者

马东东 发于:

19年/05月/08日 15时

查看次数: 3527

标签 Tags

折线图

谁收藏了?

1人已收藏

小鸡炖蘑菇