利用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中的is和id用法分析
Jan 26 Python
Python探索之URL Dispatcher实例详解
Oct 28 Python
Python中进程和线程的区别详解
Oct 29 Python
利用python库在局域网内传输文件的方法
Jun 04 Python
python远程连接服务器MySQL数据库
Jul 02 Python
Windows系统下PhantomJS的安装和基本用法
Oct 21 Python
python range实例用法分享
Feb 06 Python
Python利用FFT进行简单滤波的实现
Feb 26 Python
python使用OpenCV模块实现图像的融合示例代码
Apr 10 Python
将pymysql获取到的数据类型是tuple转化为pandas方式
May 15 Python
Flask中jinja2的继承实现方法及实例
Mar 03 Python
Django migrate报错的解决方案
May 20 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 强制性文件下载功能的函数代码(任意文件格式)
2010/05/26 PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
2013/06/13 PHP
PHP中对于浮点型的数据需要用不同的方法解决
2014/03/11 PHP
用PHP生成excel文件到指定目录
2015/06/22 PHP
PHP生成及获取JSON文件的方法
2016/08/23 PHP
Yii中特殊行为ActionFilter的使用方法示例
2020/10/18 PHP
JQuery 解析多维的Json数据格式
2009/11/02 Javascript
JavaScript 对任意元素,自定义右键菜单的实现方法
2013/05/08 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
2013/10/15 Javascript
jquery实现checkbox 全选/全不选的通用写法
2014/02/22 Javascript
jQuery实现向下滑出的平滑下拉菜单效果
2015/08/21 Javascript
原生JavaScript实现动态省市县三级联动下拉框菜单实例代码
2016/02/03 Javascript
JavaScript动态添加事件之事件委托
2016/07/12 Javascript
jQuery实现公告新闻自动滚屏效果实例代码
2016/07/14 Javascript
总结Javascript中数组各种去重的方法
2016/10/04 Javascript
原生js实现手风琴功能(支持横纵向调用)
2017/01/13 Javascript
vue+vuex+json-seiver实现数据展示+分页功能
2019/04/11 Javascript
JS左右无缝轮播功能完整实例
2019/05/16 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
2019/07/22 Javascript
小程序外卖订单界面的示例代码
2019/12/30 Javascript
element-ui和vue表单(对话框)验证提示语(残留)清除操作
2020/09/11 Javascript
python实现根据窗口标题调用窗口的方法
2015/03/13 Python
python连接远程ftp服务器并列出目录下文件的方法
2015/04/01 Python
Python中matplotlib中文乱码解决办法
2017/05/12 Python
python奇偶行分开存储实现代码
2018/03/19 Python
Pyqt实现无边框窗口拖动以及窗口大小改变
2018/04/19 Python
Python lambda表达式用法实例分析
2018/12/25 Python
通过python爬虫赚钱的方法
2019/01/29 Python
python字典排序的方法
2019/10/12 Python
用python查找统一局域网下ip对应的mac地址
2021/01/13 Python
linux下进程间通信的方式
2013/01/23 面试题
法律六进活动方案
2014/03/13 职场文书
小学班级口号
2014/06/09 职场文书
法学专业求职信范文
2015/03/19 职场文书
团结友爱主题班会
2015/08/13 职场文书
redis requires ruby version2.2.2的解决方案
2021/07/15 Redis