Pygal是一个Python开发的动态SVG图表库介绍和数据可视化
1 说明:
=====
1.1 Pygal 是另一个简单易用的数据图库,它以面向对象的方式来创建各种数据图。
1.2 Pygal 可以非常方便地生成各种格式的数据图,包括 PNG、SVG 等。
1.3 Pygal 也可以生成 XML etree、HTML 表格(这些都需要安装其他包)。
1.4 优点:支持中文,自动配色且优美,交互性强,代码简单。
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.html http://www.pygal.org/en/stable/documentation/types/index.html#chart-types https://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.svg graph.render_to_file("/home/xgj/Desktop/pygal/fruitpie.svg")
3.1.2 具体操作步骤和效果图:
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.5 graph.inner_radius = 0.5 graph.render_to_file("/home/xgj/Desktop/pygal/fruit-inner-pie.svg")
3.2.2 效果图:
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 效果图:
=====请注意:小不规范(故意的),在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组"] #第一条bar bar_chart.add(labels[0], data0) #第二条bar bar_chart.add(labels[1], data1) #当然,也可以第n条bar...... #默认左上角,也可自定义如下 #bar_chart.legend_at_bottom = True bar_chart.render_to_file("/home/xgj/Desktop/pygal/bar_chart.svg")
3.4.2 以上故意中英文定义:看看中文支持否;数据两种布局,主要是为了今后用python从外部读取数据做准备。
3.4.3 效果图:
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 效果图:
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_value hist.add("人数",freq) #添加到图表 #图表渲染为svg,用浏览器打开svg文件 hist.render_to_file("/home/xgj/Desktop/pygal/a.svg")
3.5.2 复习python的基础知识:注释里有。
3.5.3 效果图:
3.6 自定义直方图:
3.6.1 代码:import pygal hist = 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 效果图:
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 = labels rader_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 操作步骤和效果图:
5 世界地图绘制:
============
5.1 代码来源:#https://www.cnblogs.com/keqipu/p/7283991.html
5.2 代码:import pygal.maps.world worldmap_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 效果图:
===非常不错===
自己整理并分享出来,喜欢的就点赞、转发、评论和收藏。
大杨答疑原生家庭带给自己的伤害,以至于对父母又爱又恨老师好,我想说一下我心里的困惑,请老师帮梳理梳理!我的父亲是一个老师,小时候对我们的学习要求特别严格。我的两个哥哥上初二初三时,和父母对着干,自己把课本烧了不上学。剩下我,爸妈什么
到底是什么把我从古惑仔的青春中救赎出来?古惑仔般的青春岁月我出生在70年代广东一个普通的农村家庭,是三兄弟中的老小。生性活泼好玩的我,小学时成绩还不错。升入初中,结识了一群好兄弟后,我开始无心向学,跟他们一起逃学抽烟打架
孩子越管,问题越多,放手的父母到底做对了哪点?面对孩子的教育问题,几乎所有的父母,都曾经或者正在经历一个怪圈越努力解决孩子出现的问题,孩子反倒有更多的问题。那是因为,我们被假性教育问题控制了,父母深陷其中,孩子痛苦不堪。就像是
13岁男孩争吵后杀死母亲最大的失控,藏在这个细节里2020年2月25日,四川眉山市一名13岁的男孩,在与母亲争吵后,在家中将其杀害。2019年10月21日,河南一名12岁女孩与妈妈吵架,爬上十六楼,想要轻生。2019年4月17日,
那些自杀的孩子,他们的父母都忽视了这一件事情最近的新闻五花八门,但是关于孩子的,尤其是让人痛心的消息,总是能一下子揪起我们的心。前一段,17岁少年跳桥的事件,那一声叹息还未平复。近日,重庆市鲁能巴蜀中学一女生何某,在家中跳楼
为什么二婚的失败率更高?学员问为什么二次婚姻的失败率更高?大杨老师答第一次婚姻失败,如果不在因上工作,第二次失败的概率更高。美国有婚姻数据调查第一次婚姻失败的概率是30,第二次失败的概率是60,第三次失败
优等生女儿突然不愿意上学,她如何和孩子一起走出阴霾?她是一名高中优秀老师,她的女儿小学初中的优待生,被保送重点高中。但高一没多久,因为两次考试的失利,不愿意再去学校,并被医生不肯定的诊断为抑郁。她给孩子请1小时1000元收费的心理咨
被假性教育问题累死的孩子们面对孩子的教育问题,几乎所有的父母,都曾经或者正在经历一个怪圈越努力解决孩子出现的问题,孩子反倒有更多的问题。那是因为,我们被假性教育问题控制了,父母深陷其中,孩子痛苦不堪。就像是
曾是孩子心中烂草莓的父亲,培养出了在联合国工作的女儿图片来自网络一个烂草莓的定义,开启了一个父亲的成长之路!小编作者武海民老师完形幸福充电宝讲师我从小生活在农村,却几乎没干过什么农活儿。平时能为家庭所做的事情,就是放学之后割草放羊。
面对病重的父亲,我却选择了逃避。。经常听到这样一句话我命由我不由天。我原来一直以为命运只要你肯努力就可以改变,慢慢的随着年龄增长,经历了一些人生痛苦后发现自己理解错了,自己所谓的改变的只是外在的,而真正让我们幸福,
导师解惑老公投资失败亏了几十万,我怎么才能不怨恨?学员提问九年前老公自作主张去投资做生意,不征求意见也不听建议,跟家里兄弟姐妹借了二十多万,亏了五十多万。现在都没办法还钱,感觉自己是受害者,对老公的各种怨恨,每天的生活都很痛苦。图