利用python的第三方包Pygal制作简单的折线图。

申明:本文仅供学习交流使用。源码大部分来自《python编程从入门到实践》;如有侵权,请联系我删除。

  1 #!usr/bin/env python3
2 # -*-coding=utf-8 -*-
3 '''
4 制作一个简单的交易走势图。源码大部分来自<python编程从入门到实践>
5 过程分析:
6 1,从网站下载数据并存储到本地,两种方法:
7 a,urlopen
8 b,requests
9 2,读取本地数据,利用pygal制作交易走势图
10 '''
11 #正文开始
12 from __future__ import (absolute_import, division, print_function, unicode_literals)
13 try:
14 from urllib2 import urlopen
15 except ImportError:
16 from urllib.request import urlopen
17 import json
18 import requests
19 import pygal
20 from pygal.style import LightColorizedStyle as LCS,LightenStyle as LS
21
22 #第一种方法利用urlopen提取网络上存储的数据
23 #定义要提取数据的url
24 URL = "https://www.xxx.com/btc_close_2017.json"
25 read_url = urlopen(URL) #读取URL
26 read_response = read_url.read() #读取返回的数据
27
28 #开始存储数据到本地, 以'wb'形式(二进制)
29 with open('btc_close_2017_urllib.json', 'wb') as file_object:
30 file_object.write(read_response) #将读取到的数据写入到文件
31
32 file_urllib = json.loads(read_response)
33 print(file_urllib)
34
35 #第二种方法利用requests提取网络上存储的数据
36 #定义要提取数据的URL
37 URL = "https://www.xxx.com/btc_close_2017.json"
38 response = requests.get(URL) #利用requests读取URL并获取数据
39
40 #开始存储数据到本地文件;
41 with open('btc_close_2017_requests.json', 'w') as file_object:
42 file_object.write(response.text) #写入数据到本地文件,要以str格式写入
43
44 file_requests = response.json()
45 print(file_requests)
46
47 print("-----------------------I am delimiter-----------------")
48 #打印一下两种方法是不是获取到相同的数据
49 print(file_urllib == file_requests) #True
50
51 #开始读取相关数据
52 filename = 'btc_close_2017.json'; #加载文件
53
54 #以读的方式打开文件
55 with open(filename) as file_object:
56 btc_data = json.load(file_object) #将读取到的数据加载为json格式
57
58 print(btc_data) #打印是否符合预期
59
60 #打印每一天的信息,并将字符串转换成数值型的:
61 for btc_dict in btc_data:
62 date = btc_dict['date']
63 month = int(btc_dict['month'])
64 week = int(btc_dict['week'])
65 weekday = btc_dict['weekday']
66 close_price = int(float(btc_dict['close'])) #先将字符串转换为浮点型,再将浮点型转换成整型
67 print("{} is month: {}, week: {}, weekday: {}, the close price is: {}".format(date,month,week,weekday,close_price))
68
69
70 #可视化,开始绘制收盘价折线图
71
72 #定义空列表以存储循环得到的项
73 dates, months, weeks, weekdays, close_prices = [], [], [], [], []
74 #循环读取btc_data里的每一项
75 for btc_dict in btc_data:
76 date = btc_dict['date']
77 month = int(btc_dict['month'])
78 week = int(btc_dict['week'])
79 weekday = btc_dict['weekday']
80 close_price = int(float(btc_dict['close'])) #先将字符串转换为浮点型,再将浮点型转换成整型
81
82 #将每一项追加到对应的空列表
83 dates.append(date)
84 months.append(month)
85 weeks.append(week)
86 weekdays.append(weekday)
87 close_prices.append(close_price)
88
89 line_chart = pygal.Line(x_label_rotation=20,show_minor_x_labels=False) #x轴标签顺时针旋转20度,show_minor_x_labels告诉pygal不必显示全部的x轴标签
90 line_chart.title = "Close Price ($)" #标题
91 line_chart.x_title = "Dates" #x轴标题
92 line_chart.y_title = "Price" #y轴标题
93 line_chart.x_labels = dates #x轴标签
94 line_chart.x_labels_major = dates[::20] #让x轴坐标每隔20天显示第一次;
95 line_chart.add("BTC", close_prices) #
96 line_chart.render_to_file('closeprice.svg')
97
98 '''
99 写一些折线图的样式
100 '''
101 my_style = LS("#999888",base_style=LCS)
102 my_config = pygal.Config()
103 my_config.x_label_rotation = 20
104 my_config.show_legend = False
105 my_config.show_minor_x_labels = False
106 my_config.title_font_size = 10
107 my_config.label_font_size = 10
108 my_config.major_label_font_size = 18
109 my_config.truncate_label = 10
110 my_config.show_y_guides = False
111 my_config.width = 1000
112
113 #利用样式可视化
114 line_chart = pygal.Line(my_config,style=my_style)
115 line_chart.title = "BTC close price in 2017"
116 line_chart.x_title = "Dates"
117 line_chart.y_title = "Price"
118 line_chart.x_labels = dates
119 line_chart.x_labels_major = dates[::20]
120 line_chart.add("SPJ",close_prices)
121 line_chart.render_to_file("closeprice1.svg")

Python制作折线图的更多相关文章

  1. JFreeChart在制作折线图

    JFreeChart在制作折线图的时候可以使用两种不同的方式 package Line; import java.awt.Color; import java.awt.Font; import org ...

  2. Microsoft Excel Sheet/表格 制作折线图

    Microsoft Excel Sheet/表格 制作折线图 虽然比较简单,但是仍然需要稍微花一点功夫. 1.制作好表格数据 2.先将数据选定(不包括 横座标的 年月日或其他的刻度 的那一列) 3.插 ...

  3. Python绘制折线图

    一.Python绘制折线图 1.1.Python绘制折线图对应代码如下图所示 import matplotlib.pyplot as pltimport numpy as np from pylab ...

  4. 使用python制作动图

    利用python制作gif图 引言 当写文章时候,多张图片会影响排版,可以考虑制作gif图 准备 pip install imageio 代码 # This is a sample Python sc ...

  5. 利用python进行折线图,直方图和饼图的绘制

    我用10个国家某年的GDP来绘图,数据如下: labels   = ['USA', 'China', 'India', 'Japan', 'Germany', 'Russia', 'Brazil', ...

  6. excel制作折线图太麻烦?试试这些折线图在线生成工具

    折线图是以折线的上升或下降来表示统计数量的增减变化的统计图,叫作折线统计图.用折线的起伏表示数据的增减变化情况,不仅可以表示数量的多少,而且可以反映数据的增减变化情况.并且折线图也是目前最方便的一种统 ...

  7. python matplotlib 折线图

    1.绘制折线图,去上和右边框,显示中文 import numpy as np import matplotlib.pyplot as plt #plt.style.use('default') #pl ...

  8. Vue整合d3.v5.js制作--折线图(line)

    先上效果图(x轴固定为时间轴): 图中出现的悬浮框是鼠标悬停效果 1.环境说明: vue版本:"vue": "^2.5.2" d3版本:"d3&quo ...

  9. python绘折线图

    # -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt #X轴,Y轴数据 y = [0.3,0.4,2,5 ...

随机推荐

  1. DNS系列—dig命令的使用

    目录 如何安装dig dig常见用法 dig的基本语法 简单dig查询域名 指定DNS服务器查询 反查IP对应域名 如何安装dig dig是bind下面常见的工具,在linux系统上经常回用的一个dn ...

  2. 聊聊kafka-client的源码

    一,感想 kafka 客户端代码很早以前 我就想研究借鉴一下,我前前后后至少阅读过三遍源码,我发现我看不下去,不知道为啥这么写,在次期间,我也参考了很多的网上的源码分析,我发现自己依然一知半解的, 慢 ...

  3. P5665 划分

    Part 1 先来看一个错误的贪心做法:假设当前结尾的一段和为 \(a\),等待加入结尾的一段和为 \(b\),现在要处理新进来的数 \(c\). \(a\leq b\),将 \(a\) 算入答案,将 ...

  4. java类,函数传参

    1 package 传参练习; 2 //学生姓名组成的数组:指定区间和查找的名字返回此人是否存在(如果存在返回位置否则-1) 3 public class test1 { 4 public stati ...

  5. 给集合null,filter结果空集合

  6. 使用@RequestBody注解获取Ajax提交的json数据

    最近在学习有关springMVC的知识,今天学习如何使用@RequestBody注解来获取Ajax提交的json数据内容. Ajax部分代码如下: 1 $(function(){ 2 $(" ...

  7. 17.java设计模式之观察者模式

    基本需求: 气象站可以将每天测量到的温度,湿度,气压等等,以公告的形式发布出去(比如发布到自己的网站或第三方) 需要设计开放型API,便于其他第三方也能接入气象站获取数据 提供温度.气压和湿度的接口 ...

  8. 解决 win7 win10 等 64位 支持access数据库问题

    好多年不写ASP+ACCESS了,这两天帮朋友做个网站,碰到这个问题: ADODB.Connection 错误 '800a0e78' 对象关闭时,不允许操作. 记录一下. 以下内容转载自:https: ...

  9. charles解决乱码

    1.点击help ssl proxying ,install Charles Root Certificate 2.点击安装证书按钮 3:点击下一步按钮 4:选中将所有的证书都放入下列存储 点击浏览按 ...

  10. 无需付费,教你IDEA社区版中开发Web项目(SpringBoot\Tomcat)

    1.IDEA 版本介绍 最近有小伙伴私信我说 IDEA 破解怎么总是失效?难道就没有使用长一点的吗... 咳咳,除了给我留言「激活码」外,或许社区版可能完全满足你的需求. 相信有挺多小伙伴可能不清楚或 ...