1 说明:
=====
1.1 Pygal 是另一个简单易用的数据图库,它以面向对象的方式来创建各种数据图。
1.2 Pygal 可以非常方便地生成各种格式的数据图,包括 PNG、SVG 等。
1.3 Pygal 也可以生成 XML etree、HTML 表格(这些都需要安装其他包)。
1.4 优点:支持中文,自动配色且优美,交互性强,代码简单。
![26ed539d6e33aaadb614ca08f2eeec6e.png](https://img-blog.csdnimg.cn/img_convert/26ed539d6e33aaadb614ca08f2eeec6e.png)
2 准备:
=====
2.1 环境:
华为笔记本电脑、深度deepin-linux操作系统、python3.8和微软vscode编辑器。
2.2 安装:
pip install pygal#本机安装#sudo pip3.8 install pygal #没反应#推荐国内源安装#sudo pip3.8 install -i https://mirrors.aliyun.com/pypi/simple pygal #超快
#Python框架-pygal之世界地图pip install pygal_maps_world#本机安装,推荐国内源安装sudo pip3.8 install -i https://mirrors.aliyun.com/pypi/simple pygal_maps_world
2.3 官网地址:
http://www.pygal.org/en/stable/documentation/first_steps.htmlhttp://www.pygal.org/en/stable/documentation/types/index.html#chart-typeshttps://github.com/Kozea/pygal
3 数据可视化:
==========
3.1 饼图
3.1.1 代码:
import pygal# 数据,形式字典data = {'苹果':0.16881, '花生':0.14996, '梨子':0.07471, '桃子':0.06992, '西瓜':0.04762, '芒果':0.03541, '桔子':0.02925, '杨梅':0.02411, '香蕉':0.06316, '哈密瓜':0.01409, '樱桃':0.36326}# 创建图(饼图)graph = pygal.Pie() # 从字典中添加数据for k in data.keys(): graph.add(k, data[k])# 设置图标题graph.title = '2020年5月水果销售情况' # 设置图例位置(下面)graph.legend_at_bottom = True # 指定路径和目录保存,文件名为:fruitpie.svggraph.render_to_file('/home/xgj/Desktop/pygal/fruitpie.svg')
3.1.2 具体操作步骤和效果图:
![c918f8b882385fb4d52b60b723e8e1ce.gif](https://img-blog.csdnimg.cn/img_convert/c918f8b882385fb4d52b60b723e8e1ce.gif)
![facd24e042de294f113927269a4f0414.gif](https://img-blog.csdnimg.cn/img_convert/facd24e042de294f113927269a4f0414.gif)
3.2 空心饼图:
3.2.1 代码:
import pygal# 数据,形式字典data = {'苹果':0.16881, '花生':0.14996, '梨子':0.07471, '桃子':0.06992, '西瓜':0.04762, '芒果':0.03541, '桔子':0.02925, '杨梅':0.02411, '香蕉':0.06316, '哈密瓜':0.01409, '樱桃':0.36326}graph = pygal.Pie()for k in data.keys(): graph.add(k, data[k])graph.title = '2020年5月水果销售情况'graph.legend_at_bottom = True#空心饼图,增加这一行,空心内圆半径比值0.5graph.inner_radius = 0.5 graph.render_to_file('/home/xgj/Desktop/pygal/fruit-inner-pie.svg')
3.2.2 效果图:
![89347b0f9debe91908919d3850db235a.gif](https://img-blog.csdnimg.cn/img_convert/89347b0f9debe91908919d3850db235a.gif)
3.3 半圆形:
3.3.1 代码:
import pygal# 数据,形式字典data = {'苹果':0.16881, '花生':0.14996, '梨子':0.07471, '桃子':0.06992, '西瓜':0.04762, '芒果':0.03541, '桔子':0.02925, '杨梅':0.02411, '香蕉':0.06316, '哈密瓜':0.01409, '樱桃':0.36326}graph = pygal.Pie()for k in data.keys(): graph.add(k, data[k])graph.title = '2020年5月水果销售情况'graph.legend_at_bottom = True#半圆饼图:增加这一行graph.half_pie = True graph.render_to_file('/home/xgj/Desktop/pygal/fruit-half-pie.svg')
3.3.2 效果图:
![a11662893079faa869536ef1ada1ea0e.gif](https://img-blog.csdnimg.cn/img_convert/a11662893079faa869536ef1ada1ea0e.gif)
=====请注意:小不规范(故意的),在python中命名,建议这样:fruit_half_pie.svg=====
3.4 柱状图:
3.4.1 代码:
'''#方法一:import pygal bar_chart = pygal.Bar() bar_chart.add('Firsrt组', [0, 1, 1, 2, 3, 5, 8, 13]) bar_chart.add('Second组', [55, 34, 21, 13, 8, 5, 3, 2]) bar_chart.render_to_file('/home/xgj/Desktop/pygal/bar_chart.svg') '''#方法二:import pygal bar_chart = pygal.Bar() #数据data0=[0, 1, 1, 2, 3, 5, 8, 13]data1=[55, 34, 21, 13, 8, 5, 3, 2]labels=['Firsrt组','Second组']#第一条barbar_chart.add(labels[0], data0) #第二条bar bar_chart.add(labels[1], data1)#当然,也可以第n条bar......#默认左上角,也可自定义如下#bar_chart.legend_at_bottom = Truebar_chart.render_to_file('/home/xgj/Desktop/pygal/bar_chart.svg')
3.4.2 以上故意中英文定义:看看中文支持否;数据两种布局,主要是为了今后用python从外部读取数据做准备。
3.4.3 效果图:
![945d12de331734c7203a60313d170e7d.gif](https://img-blog.csdnimg.cn/img_convert/945d12de331734c7203a60313d170e7d.gif)
3.5 stackbar叠柱图:
3.5.1 代码:
import pygal# 数据读取年的数据,并字符串化year_data = [str(i) for i in range(2011, 2020)]#数据banana_data = [3500,4300,7500,5500,3200,2100,4700,6100,3900]apple_data =[3100,3400,5100,2700,3800,2600,3200,4200,4700]# 创建图(叠加柱状图)garph = pygal.StackedBar() #garph = pygal.Dot() # 创建图(点图)#garph = pygal.StackedLine() # 创建图(叠加折线图)# 添加数据garph.add('香蕉的历年销量', banana_data)garph.add('苹果的历年销量', apple_data)garph.x_labels = year_data # 设置 X 轴刻度garph.y_label_rotation = 45 # 设置Y轴的标签旋转多少度garph.title = '香蕉与苹果历年的销量分析' # 设置图标题garph.x_title = '年份' # 设置 X 轴标题garph.y_title = '销量(吨)' # 设置 Y 轴标题garph.legend_at_bottom = True # 设置图例位置(下面)# 设置页边距(margin_bottom、margin_top、margin_left、margin_right)garph.margin = 35 garph.show_x_guides = True # 显示X轴的网格线garph.show_y_guides = True # 显示Y轴的网格线# 输出到图片文件garph.render_to_file('/home/xgj/Desktop/pygal/stackbar.svg')
3.5.2 效果图:
![3e3a49e246f96d9cc0e6644f9a78cb57.gif](https://img-blog.csdnimg.cn/img_convert/3e3a49e246f96d9cc0e6644f9a78cb57.gif)
3.5 单个直方图:
3.5.1 代码:
import pygal#直方图data = [1,2,3,1,2,3,1,2,3,4,5,6,1,1,1,1,1]#Python set() 函数# 重复的被删除x_value = list(set(data))#统计freq = []for i in x_value: #data.count(i) #计算data中某个数,比如1,有几个=8个 res = data.count(i) #append添加到列表中 freq.append(res)#可视化hist = pygal.Bar()#标题hist.title = "直方图"hist._x_title = 'x坐标'hist._y_title = 'y坐标'hist.x_labels = x_valuehist.add('人数',freq) #添加到图表#图表渲染为svg,用浏览器打开svg文件hist.render_to_file("/home/xgj/Desktop/pygal/a.svg")
3.5.2 复习python的基础知识:注释里有。
3.5.3 效果图:
![012a4fc5ef9bf7f237c7603aeb31c1ba.png](https://img-blog.csdnimg.cn/img_convert/012a4fc5ef9bf7f237c7603aeb31c1ba.png)
3.6 自定义直方图:
3.6.1 代码:
import pygalhist = pygal.Histogram()#(y轴高度,x轴开始坐标,x轴结束坐标)hist.add('人数',[(4,1,1.5),(5,2,2.5),(6,3,3.5)])#标题hist.title = "自定义直方图"hist.render_to_file("/home/xgj/Desktop/pygal/a1.svg")
3.6.2 效果图:
![6a5de69d62fc5a410899e895e3188836.png](https://img-blog.csdnimg.cn/img_convert/6a5de69d62fc5a410899e895e3188836.png)
4 浏览器自动打开数据可视化:
======================
4.1 提前安装:lxml
#安装lxml:pip install lxml#本机安装:sudo pip3.8 install lxml #很慢#sudo pip3.8 install -i https://mirrors.aliyun.com/pypi/simple lxml #超快
4.2 雷达图的示例的代码:
import pygal#数据pythond = [48,60,60,34,30]JavaScriptd = [41,56,73,32,30]cd = [55,70,54,39,50]#标签labels = ['下载量','提交量','薪酬','人数','普及']#雷达图设计(Radar:雷达、Bar:柱状、Line:线状),对应修改即可rader_chart = pygal.Radar()rader_chart.title = "3组计算机语言的数据比较"#添加各个顶点含义rader_chart.x_labels = labelsrader_chart.add("python",pythond) rader_chart.add("JavaScript",JavaScriptd)rader_chart.add("C",cd)#将数据渲染到浏览器;这是启动自动浏览器打开才有这样的#文件默认保存地址和名称:file:///tmp/tmp5ehvol2e.html,随机文件名rader_chart.render_in_browser() #如果没有安装,就报错,安装lxml就可以了
4.3 操作步骤和效果图:
![6d489ea7226f6be9e56c98007d122d01.gif](https://img-blog.csdnimg.cn/img_convert/6d489ea7226f6be9e56c98007d122d01.gif)
5 世界地图绘制:
============
5.1 代码来源:
#https://www.cnblogs.com/keqipu/p/7283991.html
5.2 代码:
import pygal.maps.worldworldmap_chart = pygal.maps.world.World()worldmap_chart.title = 'Some countries'worldmap_chart.add('F countries', ['fr', 'fi'])worldmap_chart.add('M countries', ['ma', 'mc', 'md', 'me', 'mg', 'mk', 'ml', 'mm', 'mn', 'mo', 'mr', 'mt', 'mu', 'mv', 'mw', 'mx', 'my', 'mz'])worldmap_chart.add('U countries', ['ua', 'ug', 'us', 'uy', 'uz'])worldmap_chart.render_to_file('/home/xgj/Desktop/pygal/world-map.svg')
5.3 效果图:
![299303b21babd96eed85db62522e2c18.png](https://img-blog.csdnimg.cn/img_convert/299303b21babd96eed85db62522e2c18.png)
===非常不错===
自己整理并分享出来,喜欢的就点赞、转发、评论和收藏。