利用python绘制数据曲线图的实现


Posted in Python onApril 09, 2020

”在举国上下万众一心、众志成城做好新冠肺炎疫情防控工作的特殊时刻,我们不能亲临主战场,但我们能坚持在大战中坚定信心、不负韶华。“

1、爬取新闻保存为json文件,并将绘图所需数据保存至数据库

数据库表结构:

利用python绘制数据曲线图的实现

代码部分:

import pymysql
import re
import sys,urllib,json
from urllib import request
from datetime import datetime
import pandas as pd
Today=datetime.now().strftime(r"%Y-%m-%d")
#Today='2020-02-14'
def pachong():
  url='http://api.tianapi.com/txapi/ncov/index?key=xxx&date={}'.format(Today)
  req = request.Request(url)
  resp = request.urlopen(req)
  content = resp.read().decode()
  data=json.loads(content)
  with open('/Users/zhangyuchen/Desktop/latestTrends.json','w') as fp:#将所得的数据存储为json文件
    json.dump(data,fp = fp,ensure_ascii = False,indent = 4,sort_keys=True)
  #dump函数有很多参数,第一个是目标object,第二个是要写入的文件对象
  print("成功保存为json文件!")
  return(re.findall(r'"confirmedCount":(.+?),"',content),re.findall(r'"currentConfirmedCount":(.+?),"',content),re.findall(r'"curedCount":(.+?),"',content))
def connectMysql(cc): 
  #/usr/local/mysql/bin/mysql -u root -p
  db = pymysql.connect("localhost", "root", "密码", "dbname",charset='utf8' )
  cursor = db.cursor()
  sql="""insert into {0} (DATE,SICK,SICK_NOW,RECOVER)values('{1}','{2}','{3}','{4}')"""
  cursor.execute(sql.format('db1',Today,int(cc[0][0]),int(cc[1][0]),int(cc[2][0])))
  cursor.execute(sql.format('db2',Today,int(cc[0][1]),int(cc[1][1]),int(cc[2][1])))
  db.commit()
  print(("成功将{}数据存入数据库!").format(Today))
  db.close()
cc=pachong()
connectMysql(cc)

json文件:

利用python绘制数据曲线图的实现

2、利用matplotlib库函数绘制图表

import numpy as np
import matplotlib.pyplot as plt
import matplotlib
import pymysql
import re
import sys, urllib,json
from urllib import request
#/usr/local/mysql/bin/mysql -u root -p
date=[]
cSick=[]
aSick=[]
cNowSick=[]
aNowSick=[]
cRecover=[]
aRecover=[]
db = pymysql.connect("localhost", "root", "密码", "trends")
sql="select * from db1 ORDER BY DATE"
cursor = db.cursor()
cursor.execute(sql)
results = cursor.fetchall()
while results:
  for row in results:
    date.append(row[0].strftime("%d"))
    cSick.append(row[1])
    cNowSick.append(row[2])
    cRecover.append(row[3])
  results=cursor.fetchone()
#查询Abroad Table
sql="select * from db2"
cursor.execute(sql)
results = cursor.fetchall()
while results:
  for row in results:
    aSick.append(row[1])
    aNowSick.append(row[2])
    aRecover.append(row[3])
  results=cursor.fetchone()
cursor.close()
db.close()
def DrawLineChart(ySick,yNowSick):
  plt.plot(x,ySick,color='y',label="Cumulative number of cases",linewidth=3,linestyle="--")
  plt.plot(x,yNowSick,color='r',label="Current number of cases",linewidth=3,linestyle="-")
def DrawBarChart(yRecover):
  width=0.45#柱子宽度
  p2 = plt.bar(x,yRecover,width,label="Cured Count",color="#87CEFA")
Days=len(aSick)
plt.figure(figsize=(16,12), dpi=80)#设置分辨率为80像素/每英寸
x=np.arange(Days)
#创建两个子图
plt.subplot(322)
plt.title("Trends of March")
DrawLineChart(cSick,cNowSick)
DrawBarChart(cRecover)
plt.figlegend()
plt.xticks(x,date)
plt.ylabel('Number')
plt.subplot(324)
#plt.title("Trends of March")
DrawLineChart(aSick,aNowSick)
DrawBarChart(aRecover)
plt.xticks(x,date,rotation=0)
plt.xlabel('Date')
plt.ylabel('Number')
plt.show()

到此这篇关于利用python绘制数据曲线图的实现的文章就介绍到这了,更多相关python 数据曲线图内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
Dec 08 Python
Python3基础之基本数据类型概述
Aug 13 Python
Django的session中对于用户验证的支持
Jul 23 Python
Python使用smtplib模块发送电子邮件的流程详解
Jun 27 Python
Python常见加密模块用法分析【MD5,sha,crypt模块】
May 24 Python
Python使用 Beanstalkd 做异步任务处理的方法
Apr 24 Python
浅谈Python中的bs4基础
Oct 21 Python
Python配置虚拟环境图文步骤
May 20 Python
详解Python3中setuptools、Pip安装教程
Jun 18 Python
Python多线程多进程实例对比解析
Mar 12 Python
如何用Python进行时间序列分解和预测
Mar 01 Python
Python中异常处理用法
Nov 27 Python
利用python生成照片墙的示例代码
Apr 09 #Python
Python 改变数组类型为uint8的实现
Apr 09 #Python
pandas 强制类型转换 df.astype实例
Apr 09 #Python
python 给图像添加透明度(alpha通道)
Apr 09 #Python
Python日志logging模块功能与用法详解
Apr 09 #Python
解决python DataFrame 打印结果不换行问题
Apr 09 #Python
Python的PIL库中getpixel方法的使用
Apr 09 #Python
You might like
PHP判断图片格式的七种方法小结
2013/06/03 PHP
无刷新动态加载数据 滚动条加载适合评论等页面
2013/10/16 PHP
PHP Laravel中的Trait使用方法
2019/01/20 PHP
js 判断图片是否加载完以及实现图片的预下载
2014/08/14 Javascript
Javascript获取当前日期的农历日期代码
2014/10/08 Javascript
JavaScript中逗号运算符介绍及使用示例
2015/03/13 Javascript
Jquery异步提交表单代码分享
2015/03/26 Javascript
比较常见的javascript中定义函数的区别
2015/11/09 Javascript
JavaScript的设计模式经典之代理模式
2016/02/24 Javascript
原生js实现中奖信息无间隙滚动效果
2017/01/18 Javascript
js实现图片360度旋转
2017/01/22 Javascript
对称加密与非对称加密优缺点详解
2017/02/06 Javascript
jQuery实现字体颜色渐变效果的方法
2017/03/29 jQuery
微信小程序 图片宽高自适应详解
2017/05/11 Javascript
简单实现JavaScript弹幕效果
2020/08/27 Javascript
十分钟带你快速了解React16新特性
2017/11/10 Javascript
php 解压zip压缩包内容到指定目录的实例
2018/01/23 Javascript
详解vue-cli中模拟数据的两种方法
2018/07/03 Javascript
vue 1.0 结合animate.css定义动画效果
2018/07/11 Javascript
jQuery实现雪花飘落效果
2020/08/02 jQuery
Vue Object.defineProperty及ProxyVue实现双向数据绑定
2020/09/02 Javascript
Python多线程threading和multiprocessing模块实例解析
2018/01/29 Python
解决python 自动安装缺少模块的问题
2018/10/22 Python
用python 实现在不确定行数情况下多行输入方法
2019/01/28 Python
python反编译学习之字节码详解
2019/05/19 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
2019/06/24 Python
Windows10下Tensorflow2.0 安装及环境配置教程(图文)
2019/11/21 Python
python+tifffile之tiff文件读写方式
2020/01/13 Python
aws 通过boto3 python脚本打pach的实现方法
2020/05/10 Python
html5 Canvas画图教程(5)—canvas里画曲线之arc方法
2013/01/09 HTML / CSS
环境科学专业个人求职信
2013/09/26 职场文书
运动会800米加油稿
2014/02/22 职场文书
中学生学雷锋演讲稿
2014/04/26 职场文书
出生证明范本
2015/06/15 职场文书
2015年学校综合治理工作总结
2015/07/20 职场文书
煤矿安全生产管理协议书
2016/03/22 职场文书