+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2019-03(1)

2019-05(1)

2019-06(2)

2019-07(4)

2019-08(94)

用python画新型冠状病毒病例曲线图

发布于2020-02-10 17:37     阅读(910)     评论(0)     点赞(0)     收藏(2)


 用python画新型冠状病毒病例曲线图

地图的画,因为要下载地图工具包,所以没去深入学习。

  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. 功能:用python画新型冠状病毒病例曲线图
  5. 环境:python3.7
  6. 日期:2020/2/8 21:20
  7. 作者:指尖魔法师
  8. 版本:1.0
  9. """
  10. import requests, json
  11. from matplotlib import pyplot as plt
  12. from matplotlib import font_manager
  13. import time
  14. url = 'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5&callback=&_=%d' % int(time.time()*1000)
  15. def chinaDayList():
  16. """中国每日数据"""
  17. global url
  18. date_list = list()
  19. confirm_list =list()
  20. suspect_list = list()
  21. dead_list = list()
  22. heal_list = list()
  23. deadRate_list =list()
  24. healRate_list = list()
  25. jsondata = json.loads(requests.get(url).json()['data'])
  26. # print(jsondata['chinaDayList'])
  27. for daydata in jsondata['chinaDayList']:
  28. # print(daydata)
  29. date_list.append(daydata['date'])
  30. confirm_list.append(daydata['confirm'])
  31. suspect_list.append(daydata['suspect'])
  32. dead_list.append(daydata['dead'])
  33. heal_list.append(daydata['heal'])
  34. deadRate_list.append(float(daydata['deadRate']))
  35. healRate_list.append(float(daydata['healRate']))
  36. return date_list, confirm_list, suspect_list, dead_list, heal_list, deadRate_list, healRate_list
  37. def catch_provincedata():
  38. """获取中国每个省份确诊数据"""
  39. global url
  40. data = dict()
  41. jsondata = json.loads(requests.get(url).json()['data'])
  42. # 中国各省份
  43. provinces = jsondata['areaTree'][0]['children']
  44. for province in provinces:
  45. data.update({province['name']: province['total']['confirm']})
  46. return data
  47. def draw_perday_confirm_suspect(date_list, confirm_list, suspect_list):
  48. """绘制确诊和疑似人数趋势图"""
  49. # 设置字体
  50. my_font = font_manager.FontProperties('Microsoft YaHei', size=14)
  51. # 设置图形大小
  52. plt.figure(figsize=(12, 8))
  53. # 绘制图表
  54. plt.plot(date_list, confirm_list, label='确诊人数')
  55. plt.plot(date_list, suspect_list, label='疑似人数')
  56. plt.scatter(date_list, confirm_list)
  57. plt.scatter(date_list, suspect_list)
  58. # 设置X轴刻度
  59. x = date_list
  60. xtick_labels = date_list
  61. plt.xticks(x, xtick_labels, rotation=45)
  62. # 添加描述信息
  63. plt.xlabel("日期", fontproperties=my_font)
  64. plt.ylabel("人数", fontproperties=my_font)
  65. plt.title("2019-nCoV每日累计确诊和疑似人数趋势图", fontproperties=my_font)
  66. # 显示辅助网格
  67. plt.grid(alpha=0.4)
  68. # 添加图例
  69. plt.legend(prop=my_font)
  70. plt.savefig('./2019-nCoV每日累计确诊和疑似人数趋势图.png')
  71. plt.show()
  72. def draw_perday_dead_heal(date_list, dead_list, heal_list):
  73. """绘制治愈和死亡人数趋势图"""
  74. # 设置字体
  75. my_font = font_manager.FontProperties('Microsoft YaHei', size=14)
  76. # 设置图形大小
  77. plt.figure(figsize=(12, 8))
  78. # 绘制图表
  79. plt.plot(date_list, dead_list, label='死亡人数')
  80. plt.plot(date_list, heal_list, label='治愈人数')
  81. plt.scatter(date_list, dead_list)
  82. plt.scatter(date_list, heal_list)
  83. # 设置X轴刻度
  84. x = date_list
  85. xtick_labels = date_list
  86. plt.xticks(x, xtick_labels, rotation=45)
  87. # 添加描述信息
  88. plt.xlabel("日期", fontproperties=my_font)
  89. plt.ylabel("人数", fontproperties=my_font)
  90. plt.title("2019-nCoV每日死亡和治愈人数趋势图", fontproperties=my_font)
  91. # 显示辅助网格
  92. plt.grid(alpha=0.4)
  93. # 添加图例
  94. plt.legend(prop=my_font)
  95. plt.savefig('./2019-nCoV每日死亡和治愈人数趋势图.png')
  96. plt.show()
  97. def draw_perday_deadRate_healRate(date_list, deadRate_list, healRate_list):
  98. """绘制治愈率和死亡率对比趋势图"""
  99. # 设置字体
  100. my_font = font_manager.FontProperties('Microsoft YaHei', size=14)
  101. # 设置图形大小
  102. plt.figure(figsize=(12, 8))
  103. # 绘制图表
  104. plt.plot(date_list, deadRate_list, label='死亡率')
  105. plt.plot(date_list, healRate_list, label='治愈率')
  106. plt.scatter(date_list, deadRate_list)
  107. plt.scatter(date_list, healRate_list)
  108. # 设置X轴刻度
  109. x = date_list
  110. xtick_labels = date_list
  111. plt.xticks(x, xtick_labels, rotation=45)
  112. y = [i for i in range(int(max(deadRate_list+healRate_list)+2))]
  113. ytick_labels = ["{}%".format(i) for i in range(int(max(deadRate_list+healRate_list)+2))]
  114. plt.yticks(y, ytick_labels)
  115. # 添加描述信息
  116. plt.xlabel("日期", fontproperties=my_font)
  117. plt.ylabel("百分比", fontproperties=my_font)
  118. plt.title("2019-nCoV每日死亡率和治愈率对比趋势图", fontproperties=my_font)
  119. # 显示辅助网格
  120. plt.grid(alpha=0.4)
  121. # 添加图例
  122. plt.legend(prop=my_font)
  123. plt.savefig('./2019-nCoV每日治愈率和死亡率对比趋势图.png')
  124. plt.show()
  125. if __name__=="__main__":
  126. # 获取每日数据
  127. date_list, confirm_list, suspect_list, dead_list, heal_list, deadRate_list, healRate_list = chinaDayList()
  128. # 绘制确诊和疑似人数趋势图
  129. draw_perday_confirm_suspect(date_list, confirm_list, suspect_list)
  130. # 绘制治愈和死亡人数趋势图
  131. draw_perday_dead_heal(date_list, dead_list, heal_list)
  132. # 绘制治愈率和死亡率对比趋势图
  133. draw_perday_deadRate_healRate(date_list, deadRate_list, healRate_list)

 

 

发布了36 篇原创文章 · 获赞 12 · 访问量 1万+


所属网站分类: 技术文章 > 博客

作者:mimi

链接: https://www.pythonheidong.com/blog/article/231026/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

0 0
收藏该文
已收藏

评论内容:(最多支持255个字符)