Pygal 中的图表
介绍
Pygal是一个 Python API,它使我们能够构建各种样式的 SVG(标量矢量图形)图形和图表。在本指南中,我们将学习如何使用 pygal 应用不同的方法以交互和动态的方式可视化数据。我们还将了解如何使用pygal 的pygal_maps_world包和自定义样式的属性在地图中绘图。
关于 Pygal
Pygal 可高度定制,但又极其简单,这是一种罕见的组合。我们可以创建折线图、条形图、直方图、饼图、地图等等。从那里,我们可以进一步定制图表的外观和感觉。
Pygal 的优势
- 它专门创建 SVG。
- 我们可以轻松地将 pygal 与 flask 和 Django/Flask 应用程序集成。
- 为了保持包的大小合理,三个地图包被分开保存。
- 我们可以使用pygal 中的pygal.style自定义图表。
安装Pygal
安装 pygal 不需要依赖任何软件。它适用于 Python 2.7+,前提是您的系统中安装了 Python 和 pip。
- pip install:要使用pip安装,请打开终端并运行以下命令:
pip install pygal
- conda 安装:要使用conda安装,请打开终端并运行以下命令:
conda install -c conda-forge pygal
Pygal 中的图表
我假设您具有 Python 的基本知识,已在系统上安装了 Python 3,并且拥有 Web 浏览器。我们将了解如何创建以下每个图表:
- 线图
- 条形图
- 饼图
- 地图
- 定制图表
线图
基本示例
我们将取一些随机数据并研究如何绘制这些数据。
#importing pygal
import pygal
# creating line chart object
line_chart = pygal.Line()
# naming the title
line_chart.title = 'A vs B vs C vs D'
# set the range of plot
line_chart.x_labels = map(str, range(0, 20))
# adding lines
line_chart.add('A', [None, None,0, 1, 1, 2, 3, 5, None, 13, 21, 34, 55])
line_chart.add('B', [None, None, None,10, 0, 2, 5,None, 0, 3.9, 10.8, 3.8, 5.3])
line_chart.add('C', [1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12, 5.7, 4.8, 6.2, 6.6, 0.1])
line_chart.add('D', [9.2, 19.4, 15.3, 8.9,None, 9, 10.4, 10, 5.8, 6.7, 6.8, 7.5])
# rendering the file
line_chart.render_to_file('basic_line_chart.svg')
渲染后的文件将保存在当前目录中。
水平线
我们将水平绘制上例中的相同数据。
# importing pygal
import pygal
# creating horizontal line chart object
line_chart = pygal.HorizontalLine()
# add title
line_chart.title = 'A vs B vs C vs D'
line_chart.x_labels = map(str, range(0, 20))
line_chart.add('A', [None, None,0, 1, 1, 2, 3, 5, None, 13, 21, 34, 55])
line_chart.add('B', [None, None, None,10, 0, 2, 5,None, 0, 3.9, 10.8, 3.8, 5.3])
line_chart.add('C', [1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12, 5.7, 4.8, 6.2, 6.6, 0.1])
line_chart.add('D', [9.2, 19.4, 15.3, 8.9,None, 9, 10.4, 10, 5.8, 6.7, 6.8, 7.5])
# rendering file
line_chart.render_to_file('horizontal_line_chart.svg')
堆积折线图。
# importing pygal
import pygal
# creating horizontal line chart object
line_chart = pygal.StackedLine(fill=True)
# add title
line_chart.title = 'A vs B vs C vs D'
line_chart.x_labels = map(str, range(0, 20))
line_chart.add('A', [None, None,0, 1, 1, 2, 3, 5, None, 13, 21, 34, 55])
line_chart.add('B', [None, None, None,10, 0, 2, 5,None, 0, 3.9, 10.8, 3.8, 5.3])
line_chart.add('C', [1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12, 5.7, 4.8, 6.2, 6.6, 0.1])
line_chart.add('D', [9.2, 19.4, 15.3, 8.9,None, 9, 10.4, 10, 5.8, 6.7, 6.8, 7.5])
# rendering file
line_chart.render_to_file('stacked_line_chart.svg')
条形图
基本示例
# First import pygal
import pygal
# Then create a bar graph object
bar_chart = pygal.Bar()
# Add some values
bar_chart.add('Sequence Series', [0, 2, 4, 6, 8, 5, 6, 7, 21, 34, 55])
# save the svgs
bar_chart.render_in_browser()
注意:你也可以使用render_in_browser命令直接在浏览器中渲染 SVG 。如果你使用Jupyter notebook,它会变得很有建设性。
堆积条形图
在此示例中,我们将研究如何使用多个系列创建堆积条形图。
# First import pygal
import pygal
# Then create a bar graph object
bar_chart = pygal.Bar()
# Then create a bar graph
bar_chart = pygal.StackedBar()
# adding random values
bar_chart.add('Series A', [0, 50, 1, 2, 3, 5, 8, 3, 1, 44, 5])
bar_chart.add('Series B', [1, 4, 1, 5, 2, 7, 4, 5, 7, 9, 8])
# this will render the svgs in browser
bar_chart.render_to_file('stacked_bar_chart.svg')
水平多系列条形图
# First import pygal
import pygal
# Then create a bar graph object
bar_chart = pygal.Bar()
# Then create a bar graph
line_chart = pygal.HorizontalBar()
line_chart.title = 'Random data'
line_chart.add('A', 20.5)
line_chart.add('B', 36.7)
line_chart.add('C', 6.3)
line_chart.add('D', 4.5)
line_chart.add('E', 80.3)
# rendering the file
line_chart.render_to_file('Horizontal_bar_chart.svg')
饼图
我们现在将学习如何绘制基本饼图。
基本示例
# importing pygal
import pygal
# creating pie_chart object
pie_chart = pygal.Pie()
pie_chart.title = 'random data'
# adding random data
pie_chart.add('A', 20.5)
pie_chart.add('B', 36.0)
pie_chart.add('C', 35.9)
pie_chart.add('D', 5.5)
pie_chart.add('E', 1.3)
# rendering the svg to the file
pie_chart.render_to_file('pie_chart.svg')
多系列饼图
#importing pygal
import pygal
# creating pie_chart object
pie_chart = pygal.Pie()
pie_chart.title = 'random data'
# adding random data
pie_chart.add("Series A", [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55])
pie_chart.add("Series C", [0, 1, 1, 2, 3, 7, 5, 10, 20, 32, 35])
pie_chart.add("Series B", [0, 1, 1, 4, 5, 5.5, 7, 12, 26, 24, 45])
# rendering the svgs
pie_chart.render_to_file('multiple_pie_chart.svg')
油炸圈饼
# importing pygal
import pygal
# creating pie_chart object
pie_chart = pygal.Pie(inner_radius=.4)
pie_chart.title = 'random data'
# adding random data
pie_chart.add('A', 20.5)
pie_chart.add('B', 36.0)
pie_chart.add('C', 35.9)
pie_chart.add('D', 5.5)
pie_chart.add('E', 80.3)
# rendering the svg to file
pie_chart.render_to_file('donut_chart.svg')
地图
地图现在被分开保存,以保证 pygal 包的大小合理。
pygal 中有三个地图包:
- 世界地图
- 法国地图
- 瑞士地图
我们将使用世界地图包来绘制地图。
安装
在绘图之前,我们必须在系统上安装世界地图包。
pip install - To install using pip, open the terminal and run the following command:
pip install pygal_maps_world
Basic Example
import pygal
# importing World_map package
from pygal.maps.world import World
# creating object
worldmap_chart = pygal.maps.world.World()
# adding title
worldmap_chart.title = 'Some countries'
# add data
worldmap_chart.add('F countries', ['fr', 'fi'])
worldmap_chart.add('I countries', ['in', 'il','iq'])
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'])
# rendering the svg to file
worldmap_chart.render_to_file('basic_map.svg')
Addi
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~