利用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. 【mq读书笔记】消息消费过程(钩子 失败重试 消费偏移记录)

    在https://www.cnblogs.com/lccsblog/p/12249265.html中,PullMessageService负责对消息队列进行消息拉取,从远端服务器拉取消息后将消息存入P ...

  2. MOS管基础知识

    一些关于MOS管的基础知识,很多资料来源于网络. 场效应管(FET)分类:(按材料) 1. 结型 2. 绝缘栅型(MOS) 耗尽型:在SiO2绝缘层中掺入了大量的碱金属正离子Na+或K+(制造P沟道耗 ...

  3. spring aop 、Redis实现拦截重复操作

    一.问题:项目中有一些重复操作的情况,比如: 1.从场景有用户快速点击提交按钮,或者postMan测试时快速点击 2.从业务上来说,用户注册.用户下单等 3.黑客攻击 二.解决办法 1.使用sprin ...

  4. 【GDOI2014模拟】JZOJ2020年8月14日T2 网格

    [GDOI2014模拟]JZOJ2020年8月14日T2 网格 题目 Time and Memory Limits Description 某城市的街道呈网格状,左下角坐标为A(0, 0),右上角坐标 ...

  5. 20200203_windows2012下安装mysql 5.7.29

    一.   检查系统版本: 二. 下载mysql, 下载地址: https://dev.mysql.com/downloads/mysql/5.7.html#downloads 三.   解压下载后的压 ...

  6. python多进程通讯踩坑记

    # 错误代码如下 from multiprocessing import Process from queue import Queue # 正确代码应该是这样,Process和Queue都来自mul ...

  7. spring java config配置搭建工程资料收集(网文)

    https://blog.csdn.net/poorcoder_/article/details/70231779 https://github.com/lovelyCoder/springsecur ...

  8. PyQt(Python+Qt)学习随笔:QTreeWidget中获取可见项视口位置矩形的visualItemRect方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 树型部件的visualItemRect方法可以返回参数指定项在视口的位置矩形. QRect visu ...

  9. 网鼎杯 fakebook

    这道题目登录之后我们可以看到有join和login login即登录,join即注册 我们通过查看robots.txt可以知道 有源代码泄露. 先将泄露的源码下载下来审计一波 <?php cla ...

  10. java springboot@GeneratedValue 注解

    springboot中@GeneratedValue作用: (1)@GeneratedValue注解存在的意义主要就是为一个实体生成一个唯一标识的主键.@GeneratedValue提供了主键的生成策 ...