利用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中的变量及其命名和打印
Mar 11 Python
python selenium UI自动化解决验证码的4种方法
Jan 05 Python
Python中.join()和os.path.join()两个函数的用法详解
Jun 11 Python
pandas 选择某几列的方法
Jul 03 Python
python斐波那契数列的计算方法
Sep 27 Python
python操作gitlab API过程解析
Dec 27 Python
python matplotlib中的subplot函数使用详解
Jan 19 Python
python读取当前目录下的CSV文件数据
Mar 11 Python
如何对python的字典进行排序
Jun 19 Python
python如何安装下载后的模块
Jul 03 Python
详解用python -m http.server搭一个简易的本地局域网
Sep 24 Python
python Django框架快速入门教程(后台管理)
Jul 21 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资源管理框架Assetic简介
2014/06/12 PHP
PHP 导出Excel示例分享
2014/08/18 PHP
Yii框架数据模型的验证规则rules()被执行的方法
2016/12/02 PHP
document.documentElement && document.documentElement.scrollTop
2007/12/01 Javascript
JavaScript的单例模式 (singleton in Javascript)
2010/06/11 Javascript
写JQuery插件的基本知识
2013/11/25 Javascript
jquery获得option的值和对option进行操作
2013/12/13 Javascript
javascript动态创建表格及添加数据实例详解
2015/05/13 Javascript
jquery实现经典的淡入淡出选项卡效果代码
2015/09/22 Javascript
12种JavaScript常用的MVC框架比较分析
2015/11/16 Javascript
JS实现为排序好的字符串找出重复行的方法
2016/03/02 Javascript
Boostrap入门准备之border box
2016/05/09 Javascript
JS+CSS3制作炫酷的弹窗效果
2016/11/08 Javascript
完美解决IE不支持Data.parse()的问题
2016/11/24 Javascript
jQuery 选择符详细介绍及整理
2016/12/02 Javascript
浅谈html转义及防止javascript注入攻击的方法
2016/12/04 Javascript
vue.js的computed,filter,get,set的用法及区别详解
2018/03/08 Javascript
详解NodeJs开发微信公众号
2018/05/25 NodeJs
javascript验证form表单数据的案例详解
2019/03/25 Javascript
vue 解决异步数据更新问题
2019/10/29 Javascript
bootstrap-closable-tab可实现关闭的tab标签页插件
2020/08/09 Javascript
探究一道价值25k的蚂蚁金服异步串行面试题
2020/08/21 Javascript
解决vue初始化项目一直停在downloading template的问题
2020/11/09 Javascript
linux下安装easy_install的方法
2013/02/10 Python
Python 正则表达式入门(初级篇)
2016/12/07 Python
python 获取utc时间转化为本地时间的方法
2018/12/31 Python
Python 一句话生成字母表的方法
2019/01/02 Python
Python常见读写文件操作实例总结【文本、json、csv、pdf等】
2019/04/15 Python
Python队列RabbitMQ 使用方法实例记录
2019/08/05 Python
中专生自荐信
2013/10/12 职场文书
建筑专业自我鉴定
2013/10/22 职场文书
社区党员公开承诺书
2014/08/30 职场文书
乡镇务虚会发言材料
2014/10/20 职场文书
乡镇群众路线专项整治方案
2014/11/03 职场文书
社区党员群众路线教育实践活动心得体会
2014/11/03 职场文书
2014年生产部工作总结
2014/12/17 职场文书