python中pygal_Python数据可视化之Pygal图表类型

pip install pygal -i https://pypi.tuna.tsinghua.edu.cn/simple

复制代码

使用的编辑器是Pycharm工具软件,各位可以参考一下

下载完并且安装完Pycharn后新建项目新建 python 文件

简单的python图表

import pygal

pygal.Bar()(1, 3, 3, 7)(1, 6, 6, 4).render()

复制代码

生成svg图表

pygal.Bar()(1, 3, 3, 7)(1, 6, 6, 4).render_to_file("simple.svg")

复制代码

由于markdown不支持svg格式,只好用截图代替

制作多系列图标

import pygal

bar_chart = pygal.Bar()

bar_chart.add('Fibonacci', [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55])

bar_chart.add('Padovan', [1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12])

bar_chart.render_to_file("mul-graph.svg")

复制代码

堆叠图表StackedBar

import pygal

bar_chart = pygal.StackedBar()

bar_chart.add('Fibonacci', [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55])

bar_chart.add('Padovan', [1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12])

bar_chart.render_to_file("StackedBar.svg")

复制代码

将上面的图表水平HorizontalStackedBar

import pygal

bar_chart = pygal.HorizontalStackedBar()

bar_chart.add('Fibonacci', [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55])

bar_chart.add('Padovan', [1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12])

bar_chart.render_to_file("HorizontalStackedBar.svg")

复制代码

添加标签

import pygal

bar_chart = pygal.HorizontalStackedBar()

bar_chart.title = "Remarquable sequences"

bar_chart.x_labels = map(str, range(11))

bar_chart.add('Fibonacci', [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55])

bar_chart.add('Padovan', [1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12])

bar_chart.render_to_file("HorizontalStackedBar-add-labels.svg")

复制代码

图表类型

上面只介绍了Bar,下面就介绍Pygal各种图表类型

Line

Basic

基本的简单线形图

import pygal

line_chart = pygal.Line()

line_chart.title = 'Browser usage evolution (in %)'

line_chart.x_labels = map(str, range(2002, 2013))

line_chart.add('Firefox', [None, None, 0, 16.6, 25, 31, 36.4, 45.5, 46.3, 42.8, 37.1])

line_chart.add('Chrome', [None, None, None, None, None, None, 0, 3.9, 10.8, 23.8, 35.3])

line_chart.add('IE', [85.8, 84.6, 84.7, 74.5, 66, 58.6, 54.7, 44.8, 36.2, 26.6, 20.1])

line_chart.add('Others', [14.2, 15.4, 15.3, 8.9, 9, 10.4, 8.9, 5.8, 6.7, 6.8, 7.5])

line_chart.render_to_file("line-basic.svg")

复制代码

Horizontal Line

相同的图形但水平,范围为0-100。

import pygal

line_chart = pygal.HorizontalLine()

line_chart.title = 'Browser usage evolution (in %)'

line_chart.x_labels = map(str, range(2002, 2013))

line_chart.add('Firefox', [None, None, 0, 16.6, 25, 31, 36.4, 45.5, 46.3, 42.8, 37.1])

line_chart.add('Chrome', [None, None, None, None, None, None, 0, 3.9, 10.8, 23.8, 35.3])

line_chart.add('IE', [85.8, 84.6, 84.7, 74.5, 66, 58.6, 54.7, 44.8, 36.2, 26.6, 20.1])

line_chart.add('Others', [14.2, 15.4, 15.3, 8.9, 9, 10.4, 8.9, 5.8, 6.7, 6.8, 7.5])

line_chart.range = [0, 100]

line_chart.render_to_file("line-horizontal-line.svg")

复制代码

Stacked

相同的图形但具有堆叠值和填充渲染

import pygal

# fill参数是指是否填充

line_chart = pygal.StackedLine(fill=True)

line_chart.title = 'Browser usage evolution (in %)'

line_chart.x_labels = map(str, range(2002, 2013))

line_chart.add('Firefox', [None, None, 0, 16.6, 25, 31, 36.4, 45.5, 46.3, 42.8, 37.1])

line_chart.add('Chrome', [None, None, None, None, None, None, 0, 3.9, 10.8, 23.8, 35.3])

line_chart.add('IE', [85.8, 84.6, 84.7, 74.5, 66, 58.6, 54.7, 44.8, 36.2, 26.6, 20.1])

line_chart.add('Others', [14.2, 15.4, 15.3, 8.9, 9, 10.4, 8.9, 5.8, 6.7, 6.8, 7.5])

line_chart.render_to_file("line-stacked.svg")

复制代码

Time

对于与时间相关的图,只需格式化标签或使用xy图表的一种变体

import pygal

from datetime import datetime

# x_label_rotation=20是指x轴标签右旋转20度,可负数,负数向左旋转

date_chart = pygal.Line(x_label_rotation=-20)

date_chart.x_labels = map(lambda d: d.strftime('%Y-%m-%d'), [

datetime(2013, 1, 2),

datetime(2013, 1, 12),

datetime(2013, 2, 2),

datetime(2013, 2, 22)])

date_chart.add("Visits", [300, 412, 823, 672])

date_chart.render_to_file("line-time.svg")

复制代码

Lambda是一个表达式,也可以是一个匿名函数

def sum(x, y):

return x + y

复制代码

在Lambda中可以这样写

p = lambda x, y: x + y

复制代码

Bar

Basic

基本的简单条形图

import pygal

line_chart = pygal.Bar()

line_chart.title = 'Browser usage evolution (in %)'

line_chart.x_labels = map(str, range(2002, 2013))

line_chart.add('Firefox', [None, None, 0, 16.6, 25, 31, 36.4, 45.5, 46.3, 42.8, 37.1])

line_chart.add('Chrome', [None, None, None, None, None, None, 0, 3.9, 10.8, 23.8, 35.3])

line_chart.add('IE', [85.8, 84.6, 84.7, 74.5, 66, 58.6, 54.7, 44.8, 36.2, 26.6, 20.1])

line_chart.add('Others', [14.2, 15.4, 15.3, 8.9, 9, 10.4, 8.9, 5.8, 6.7, 6.8, 7.5])

line_chart.render_to_file("bar-basic.svg")

复制代码

Stacked

相同的图形但具有堆叠值

import pygal

line_chart = pygal.StackedBar()

line_chart.title = 'Browser usage evolution (in %)'

line_chart.x_labels = map(str, range(2002, 2013))

line_chart.add('Firefox', [None, None, 0, 16.6, 25, 31, 36.4, 45.5, 46.3, 42.8, 37.1])

line_chart.add('Chrome', [None, None, None, None, None, None, 0, 3.9, 10.8, 23.8, 35.3])

line_chart.add('IE', [85.8, 84.6, 84.7, 74.5, 66, 58.6, 54.7, 44.8, 36.2, 26.6, 20.1])

line_chart.add('Others', [14.2, 15.4, 15.3, 8.9, 9, 10.4, 8.9, 5.8, 6.7, 6.8, 7.5])

line_chart.render_to_file("bar-stacked.svg")

复制代码

Horizontal

水平条形图

import pygal

line_chart = pygal.HorizontalBar()

line_chart.title = 'Browser usage in February 2012 (in %)'

line_chart.add('IE', 19.5)

line_chart.add('Firefox', 36.6)

line_chart.add('Chrome', 36.3)

line_chart.add('Safari', 4.5)

line_chart.add('Opera', 2.3)

line_chart.render_to_file("bar-horizontal.svg")

复制代码

Histogram

Basic

直方图是特殊条形,它为条形图取3个值:纵坐标高度,横坐标开始和横坐标结束。

import pygal

hist = pygal.Histogram()

hist.add('Wide bars', [(5, 0, 10), (4, 5, 13), (2, 0, 15)])

hist.add('Narrow bars', [(10, 1, 2), (12, 4, 4.5), (8, 11, 13)])

hist.render_to_file("histogram-basic.svg")

复制代码

XY

Basic

基本XY线,绘制余弦函数

import pygal

from math import cos

xy_chart = pygal.XY()

xy_chart.title = 'XY Cosinus'

xy_chart.add('x = cos(y)', [(cos(x / 10.), x / 10.) for x in range(-50, 50, 5)])

xy_chart.add('y = cos(x)', [(x / 10., cos(x / 10.)) for x in range(-50, 50, 5)])

xy_chart.add('x = 1', [(1, -5), (1, 5)])

xy_chart.add('x = -1', [(-1, -5), (-1, 5)])

xy_chart.add('y = 1', [(-5, 1), (5, 1)])

xy_chart.add('y = -1', [(-5, -1), (5, -1)])

xy_chart.render_to_file("xy-basic.svg")

复制代码

Scatter Plot

禁用点和点之间的连线而获得散点图

import pygal

# stroke参数是指是否禁用连线

xy_chart = pygal.XY(stroke=False)

xy_chart.title = 'Correlation'

xy_chart.add('A', [(0, 0), (.1, .2), (.3, .1), (.5, 1), (.8, .6), (1, 1.08), (1.3, 1.1), (2, 3.23), (2.43, 2)])

xy_chart.add('B', [(.1, .15), (.12, .23), (.4, .3), (.6, .4), (.21, .21), (.5, .3), (.6, .8), (.7, .8)])

xy_chart.add('C', [(.05, .01), (.13, .02), (1.5, 1.7), (1.52, 1.6), (1.8, 1.63), (1.5, 1.82), (1.7, 1.23), (2.1, 2.23), (2.3, 1.98)])

xy_chart.render_to_file("xy-scatter-plot.svg")

复制代码

Dates

DateTime

import pygal

from datetime import datetime

# truncate_label=-1是指显示到最后一个元素

# x_value_formatter指X轴的值的格式化

datetimeline = pygal.DateTimeLine(

x_label_rotation=35, truncate_label=-1,

x_value_formatter=lambda dt: dt.strftime('%d, %b %Y at %I:%M:%S %p')

)

datetimeline.add("Serie", [

(datetime(2013, 1, 2, 12, 0), 300),

(datetime(2013, 1, 12, 14, 30, 45), 412),

(datetime(2013, 2, 2, 6), 823),

(datetime(2013, 2, 22, 9, 45), 672)

])

datetimeline.render_to_file("dates-datetime.svg")

复制代码

Date

import pygal

from datetime import date

dateline = pygal.DateLine(x_label_rotation=25)

dateline.x_labels = [

date(2013, 1, 1),

date(2013, 7, 1),

date(2014, 1, 1),

date(2014, 7, 1),

date(2015, 1, 1),

date(2015, 7, 1)

]

dateline.add("Serie", [

(date(2013, 1, 2), 213),

(date(2013, 8, 2), 281),

(date(2014, 12, 7), 198),

(date(2015, 3, 21), 120)

])

dateline.render_to_file("dates-date.svg")

复制代码

Time

import pygal

from datetime import time

dateline = pygal.TimeLine(x_label_rotation=25)

dateline.add("Serie", [

(time(), 0),

(time(6), 5),

(time(8, 30), 12),

(time(11, 59, 59), 4),

(time(18), 10),

(time(23, 30), -1),

])

dateline.render_to_file("dates-time.svg")

复制代码

TimeDelta

import pygal

from datetime import timedelta

dateline = pygal.TimeDeltaLine(x_label_rotation=25)

dateline.add("Serie", [

(timedelta(), 0),

(timedelta(seconds=6), 5),

(timedelta(minutes=11, seconds=59), 4),

(timedelta(days=3, microseconds=30), 12),

(timedelta(weeks=1), 10),

])

dateline.render_to_file("dates-timedelta.svg")

复制代码

Pie

Basic

简单的饼图

import pygal

pie_chart = pygal.Pie()

pie_chart.title = 'Browser usage in February 2012 (in %)'

pie_chart.add('IE', 19.5)

pie_chart.add('Firefox', 36.6)

pie_chart.add('Chrome', 36.3)

pie_chart.add('Safari', 4.5)

pie_chart.add('Opera', 2.3)

pie_chart.render_to_file("pie-basic.svg")

复制代码

Multi-series pie

相同的饼图,但分为子类别

import pygal

pie_chart = pygal.Pie()

pie_chart.title = 'Browser usage by version in February 2012 (in %)'

pie_chart.add('IE', [5.7, 10.2, 2.6, 1])

pie_chart.add('Firefox', [.6, 16.8, 7.4, 2.2, 1.2, 1, 1, 1.1, 4.3, 1])

pie_chart.add('Chrome', [.3, .9, 17.1, 15.3, .6, .5, 1.6])

pie_chart.add('Safari', [4.4, .1])

pie_chart.add('Opera', [.1, 1.6, .1, .5])

pie_chart.render_to_file("pie-multi-series.svg")

复制代码

Donut

可以指定内半径来获得甜甜圈

import pygal

# inner_radius内圆半径0和1之间

pie_chart = pygal.Pie(inner_radius=.5)

pie_chart.title = 'Browser usage in February 2012 (in %)'

pie_chart.add('IE', 19.5)

pie_chart.add('Firefox', 36.6)

pie_chart.add('Chrome', 36.3)

pie_chart.add('Safari', 4.5)

pie_chart.add('Opera', 2.3)

pie_chart.render_to_file("pie-donut.svg")

复制代码

Half pie

import pygal

# half_pie参数是指是否为半圆

pie_chart = pygal.Pie(half_pie=True)

pie_chart.title = 'Browser usage in February 2012 (in %)'

pie_chart.add('IE', 19.5)

pie_chart.add('Firefox', 36.6)

pie_chart.add('Chrome', 36.3)

pie_chart.add('Safari', 4.5)

pie_chart.add('Opera', 2.3)

pie_chart.render_to_file("pie-half.svg")

复制代码

Radar

Basic

简单的Kiviat图

import pygal

radar_chart = pygal.Radar()

radar_chart.title = 'V8 benchmark results'

radar_chart.x_labels = ['Richards', 'DeltaBlue', 'Crypto', 'RayTrace', 'EarleyBoyer', 'RegExp', 'Splay', 'NavierStokes']

radar_chart.add('Chrome', [6395, 8212, 7520, 7218, 12464, 1660, 2123, 8607])

radar_chart.add('Firefox', [7473, 8099, 11700, 2651, 6361, 1044, 3797, 9450])

radar_chart.add('Opera', [3472, 2933, 4203, 5229, 5810, 1828, 9013, 4669])

radar_chart.add('IE', [43, 41, 59, 79, 144, 136, 34, 102])

radar_chart.render_to_file("radar-basic.svg")

复制代码

或者也可以

import pygal

radar_chart = pygal.Radar(title='V8 benchmark results', width=600, height=500)

radar_chart.title = 'V8 benchmark results'

radar_chart.width = 600

radar_chart.height = 500

radar_chart.x_labels = ['Richards', 'DeltaBlue', 'Crypto', 'RayTrace', 'EarleyBoyer', 'RegExp', 'Splay', 'NavierStokes']

radar_chart.add('Chrome', [6395, 8212, 7520, 7218, 12464, 1660, 2123, 8607])

radar_chart.add('Firefox', [7473, 8099, 11700, 2651, 6361, 1044, 3797, 9450])

radar_chart.add('Opera', [3472, 2933, 4203, 5229, 5810, 1828, 9013, 4669])

radar_chart.add('IE', [43, 41, 59, 79, 144, 136, 34, 102])

radar_chart.render_to_file("radar-basic.svg")

复制代码

Box

Extremes (default)

import pygal

box_plot = pygal.Box()

box_plot.title = 'V8 benchmark results'

box_plot.add('Chrome', [6395, 8212, 7520, 7218, 12464, 1660, 2123, 8607])

box_plot.add('Firefox', [7473, 8099, 11700, 2651, 6361, 1044, 3797, 9450])

box_plot.add('Opera', [3472, 2933, 4203, 5229, 5810, 1828, 9013, 4669])

box_plot.add('IE', [43, 41, 59, 79, 144, 136, 34, 102])

box_plot.render_to_file("box-extremes.svg")

复制代码

1.5 interquartile range

import pygal

box_plot = pygal.Box(box_mode="1.5IQR")

box_plot.title = 'V8 benchmark results'

box_plot.add('Chrome', [6395, 8212, 7520, 7218, 12464, 1660, 2123, 8607])

box_plot.add('Firefox', [7473, 8099, 11700, 2651, 6361, 1044, 3797, 9450])

box_plot.add('Opera', [3472, 2933, 4203, 5229, 5810, 1828, 9013, 4669])

box_plot.add('IE', [43, 41, 59, 79, 144, 136, 34, 102])

box_plot.render_to_file("box-interquartile.svg")

复制代码

Dot

Basic

import pygal

dot_chart = pygal.Dot(x_label_rotation=30)

dot_chart.title = 'V8 benchmark results'

dot_chart.x_labels = ['Richards', 'DeltaBlue', 'Crypto', 'RayTrace', 'EarleyBoyer', 'RegExp', 'Splay', 'NavierStokes']

dot_chart.add('Chrome', [6395, 8212, 7520, 7218, 12464, 1660, 2123, 8607])

dot_chart.add('Firefox', [7473, 8099, 11700, 2651, 6361, 1044, 3797, 9450])

dot_chart.add('Opera', [3472, 2933, 4203, 5229, 5810, 1828, 9013, 4669])

dot_chart.add('IE', [43, 41, 59, 79, 144, 136, 34, 102])

dot_chart.render_to_file('dot-basic.svg')

复制代码

Negative

支持负数

import pygal

dot_chart = pygal.Dot(x_label_rotation=30)

dot_chart.add('Normal', [10, 50, 76, 80, 25])

dot_chart.add('With negatives', [0, -34, -29, 39, -75])

dot_chart.render_to_file('dot-negative.svg')

复制代码

Funnel

Basic

漏斗图

import pygal

funnel_chart = pygal.Funnel()

funnel_chart.title = 'V8 benchmark results'

funnel_chart.x_labels = ['Richards', 'DeltaBlue', 'Crypto', 'RayTrace', 'EarleyBoyer', 'RegExp', 'Splay', 'NavierStokes']

funnel_chart.add('Opera', [3472, 2933, 4203, 5229, 5810, 1828, 9013, 4669])

funnel_chart.add('Firefox', [7473, 8099, 11700, 2651, 6361, 1044, 3797, 9450])

funnel_chart.add('Chrome', [6395, 8212, 7520, 7218, 12464, 1660, 2123, 8607])

funnel_chart.render_to_file('funnel-basic.svg')

复制代码

SolidGauge

import pygal

gauge = pygal.SolidGauge(inner_radius=0.70)

# 百分格式

percent_formatter = lambda x: '{:.10g}%'.format(x)

# 美元格式

dollar_formatter = lambda x: '{:.10g}$'.format(x)

gauge.value_formatter = percent_formatter

gauge.add('Series 1', [{'value': 225000, 'max_value': 1275000}],

formatter=dollar_formatter)

gauge.add('Series 2', [{'value': 110, 'max_value': 100}])

gauge.add('Series 3', [{'value': 3}])

gauge.add(

'Series 4', [

{'value': 51, 'max_value': 100},

{'value': 12, 'max_value': 100}])

gauge.add('Series 5', [{'value': 79, 'max_value': 100}])

gauge.add('Series 6', 99)

gauge.add('Series 7', [{'value': 100, 'max_value': 100}])

gauge.render_to_file('solidgauge-normal.svg')

复制代码

Half

import pygal

gauge = pygal.SolidGauge(

half_pie=True, inner_radius=0.70,

style=pygal.style.styles['default'](value_font_size=10))

percent_formatter = lambda x: '{:.10g}%'.format(x)

dollar_formatter = lambda x: '{:.10g}$'.format(x)

gauge.value_formatter = percent_formatter

gauge.add('Series 1', [{'value': 225000, 'max_value': 1275000}],

formatter=dollar_formatter)

gauge.add('Series 2', [{'value': 110, 'max_value': 100}])

gauge.add('Series 3', [{'value': 3}])

gauge.add(

'Series 4', [

{'value': 51, 'max_value': 100},

{'value': 12, 'max_value': 100}])

gauge.add('Series 5', [{'value': 79, 'max_value': 100}])

gauge.add('Series 6', 99)

gauge.add('Series 7', [{'value': 100, 'max_value': 100}])

gauge.render_to_file('solidgauge-half.svg')

复制代码

Gauge

Basic

仪表图

import pygal

gauge_chart = pygal.Gauge(human_readable=True)

gauge_chart.title = 'DeltaBlue V8 benchmark results'

gauge_chart.range = [0, 10000]

gauge_chart.add('Chrome', 8212)

gauge_chart.add('Firefox', 8099)

gauge_chart.add('Opera', 2933)

gauge_chart.add('IE', 41)

gauge_chart.render_to_file('gauge-basic.svg')

复制代码

Pyramid

Basic

人口金字塔

import pygal

ages = [(364381, 358443, 360172, 345848, 334895, 326914, 323053, 312576, 302015, 301277, 309874, 318295, 323396, 332736, 330759, 335267, 345096, 352685, 368067, 381521, 380145, 378724, 388045, 382303, 373469, 365184, 342869, 316928, 285137, 273553, 250861, 221358, 195884, 179321, 171010, 162594, 152221, 148843, 143013, 135887, 125824, 121493, 115913, 113738, 105612, 99596, 91609, 83917, 75688, 69538, 62999, 58864, 54593, 48818, 44739, 41096, 39169, 36321, 34284, 32330, 31437, 30661, 31332, 30334, 23600, 21999, 20187, 19075, 16574, 15091, 14977, 14171, 13687, 13155, 12558, 11600, 10827, 10436, 9851, 9794, 8787, 7993, 6901, 6422, 5506, 4839, 4144, 3433, 2936, 2615),

(346205, 340570, 342668, 328475, 319010, 312898, 308153, 296752, 289639, 290466, 296190, 303871, 309886, 317436, 315487, 316696, 325772, 331694, 345815, 354696, 354899, 351727, 354579, 341702, 336421, 321116, 292261, 261874, 242407, 229488, 208939, 184147, 162662, 147361, 140424, 134336, 126929, 125404, 122764, 116004, 105590, 100813, 95021, 90950, 85036, 79391, 72952, 66022, 59326, 52716, 46582, 42772, 38509, 34048, 30887, 28053, 26152, 23931, 22039, 20677, 19869, 19026, 18757, 18308, 14458, 13685, 12942, 12323, 11033, 10183, 10628, 10803, 10655, 10482, 10202, 10166, 9939, 10138, 10007, 10174, 9997, 9465, 9028, 8806, 8450, 7941, 7253, 6698, 6267, 5773),

(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 91, 412, 1319, 2984, 5816, 10053, 16045, 24240, 35066, 47828, 62384, 78916, 97822, 112738, 124414, 130658, 140789, 153951, 168560, 179996, 194471, 212006, 225209, 228886, 239690, 245974, 253459, 255455, 260715, 259980, 256481, 252222, 249467, 240268, 238465, 238167, 231361, 223832, 220459, 222512, 220099, 219301, 221322, 229783, 239336, 258360, 271151, 218063, 213461, 207617, 196227, 174615, 160855, 165410, 163070, 157379, 149698, 140570, 131785, 119936, 113751, 106989, 99294, 89097, 78413, 68174, 60592, 52189, 43375, 35469, 29648, 24575, 20863),

(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 392, 1351, 3906, 7847, 12857, 19913, 29108, 42475, 58287, 74163, 90724, 108375, 125886, 141559, 148061, 152871, 159725, 171298, 183536, 196136, 210831, 228757, 238731, 239616, 250036, 251759, 259593, 261832, 264864, 264702, 264070, 258117, 253678, 245440, 241342, 239843, 232493, 226118, 221644, 223440, 219833, 219659, 221271, 227123, 232865, 250646, 261796, 210136, 201824, 193109, 181831, 159280, 145235, 145929, 140266, 133082, 124350, 114441, 104655, 93223, 85899, 78800, 72081, 62645, 53214, 44086, 38481, 32219, 26867, 21443, 16899, 13680, 11508),

(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 5, 17, 15, 31, 34, 38, 35, 45, 299, 295, 218, 247, 252, 254, 222, 307, 316, 385, 416, 463, 557, 670, 830, 889, 1025, 1149, 1356, 1488, 1835, 1929, 2130, 2362, 2494, 2884, 3160, 3487, 3916, 4196, 4619, 5032, 5709, 6347, 7288, 8139, 9344, 11002, 12809, 11504, 11918, 12927, 13642, 13298, 14015, 15751, 17445, 18591, 19682, 20969, 21629, 22549, 23619, 25288, 26293, 27038, 27039, 27070, 27750, 27244, 25905, 24357, 22561, 21794, 20595),

(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 8, 0, 8, 21, 34, 49, 84, 97, 368, 401, 414, 557, 654, 631, 689, 698, 858, 1031, 1120, 1263, 1614, 1882, 2137, 2516, 2923, 3132, 3741, 4259, 4930, 5320, 5948, 6548, 7463, 8309, 9142, 10321, 11167, 12062, 13317, 15238, 16706, 18236, 20336, 23407, 27024, 32502, 37334, 34454, 38080, 41811, 44490, 45247, 46830, 53616, 58798, 63224, 66841, 71086, 73654, 77334, 82062, 87314, 92207, 94603, 94113, 92753, 93174, 91812, 87757, 84255, 79723, 77536, 74173),

(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 0, 11, 35, 137, 331, 803, 1580, 2361, 3632, 4866, 6849, 8754, 10422, 12316, 14152, 16911, 19788, 22822, 27329, 31547, 35711, 38932, 42956, 46466, 49983, 52885, 55178, 56549, 57632, 57770, 57427, 56348, 55593, 55554, 53266, 51084, 49342, 48555, 47067, 45789, 44988, 44624, 44238, 46267, 46203, 36964, 33866, 31701, 28770, 25174, 22702, 21934, 20638, 19051, 17073, 15381, 13736, 11690, 10368, 9350, 8375, 7063, 6006, 5044, 4030, 3420, 2612, 2006, 1709, 1264, 1018),

(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 6, 11, 20, 68, 179, 480, 1077, 2094, 3581, 5151, 7047, 9590, 12434, 15039, 17257, 19098, 21324, 24453, 27813, 32316, 37281, 43597, 49647, 53559, 58888, 62375, 67219, 70956, 73547, 74904, 75994, 76224, 74979, 72064, 70330, 68944, 66527, 63073, 60899, 60968, 58756, 57647, 56301, 57246, 57068, 59027, 59187, 47549, 44425, 40976, 38077, 32904, 29431, 29491, 28020, 26086, 24069, 21742, 19498, 17400, 15738, 14451, 13107, 11568, 10171, 8530, 7273, 6488, 5372, 4499, 3691, 3259, 2657)]

types = ['Males single', 'Females single',

'Males married', 'Females married',

'Males widowed', 'Females widowed',

'Males divorced', 'Females divorced']

pyramid_chart = pygal.Pyramid(human_readable=True, legend_at_bottom=True)

pyramid_chart.title = 'England population by age in 2010 (source: ons.gov.uk)'

pyramid_chart.x_labels = map(lambda x: str(x) if not x % 5 else '', range(90))

for type, age in zip(types, ages):

pyramid_chart.add(type, age)

pyramid_chart.render_to_file('pyramid-basic.svg')

复制代码

Treemap

Basic

树形图

import pygal

treemap = pygal.Treemap()

treemap.title = 'Binary TreeMap'

treemap.add('A', [2, 1, 12, 4, 2, 1, 1, 3, 12, 3, 4, None, 9])

treemap.add('B', [4, 2, 5, 10, 3, 4, 2, 7, 4, -10, None, 8, 3, 1])

treemap.add('C', [3, 8, 3, 3, 5, 3, 3, 5, 4, 12])

treemap.add('D', [23, 18])

treemap.add('E', [1, 2, 1, 2, 3, 3, 1, 2, 3,

4, 3, 1, 2, 1, 1, 1, 1, 1])

treemap.add('F', [31])

treemap.add('G', [5, 9.3, 8.1, 12, 4, 3, 2])

treemap.add('H', [12, 3, 3])

treemap.render_to_file('treemap-basic.svg')

复制代码

Maps

World map

安装

pip install pygal_maps_world

复制代码

Countries

import pygal

worldmap_chart = pygal.maps.world.World()

worldmap_chart.title = 'Some countries'

worldmap_chart.add('C countries', ['cn', 'ca', 'ch', 'cg'])

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('world-map-countries.svg')

复制代码

Continents

访问各大洲

import pygal

supra = pygal.maps.world.SupranationalWorld()

supra.add('Asia', [('asia', 1)])

supra.add('Europe', [('europe', 1)])

supra.add('Africa', [('africa', 1)])

supra.add('North america', [('north_america', 1)])

supra.add('South america', [('south_america', 1)])

supra.add('Oceania', [('oceania', 1)])

supra.add('Antartica', [('antartica', 1)])

supra.render_to_file('world-map-continents.svg')

复制代码

国家代码列表

code

Country

code

Country

ad

Andorra

la

Lao People’s Democratic Republic

ae

United Arab Emirates

lb

Lebanon

af

Afghanistan

li

Liechtenstein

al

Albania

lk

Sri Lanka

am

Armenia

lr

Liberia

ao

Angola

ls

Lesotho

aq

Antarctica

lt

Lithuania

ar

Argentina

lu

Luxembourg

at

Austria

lv

Latvia

au

Australia

ly

Libyan Arab Jamahiriya

az

Azerbaijan

ma

Morocco

ba

Bosnia and Herzegovina

mc

Monaco

bd

Bangladesh

md

Moldova, Republic of

be

Belgium

me

Montenegro

bf

Burkina Faso

mg

Madagascar

bg

Bulgaria

mk

Macedonia, the former Yugoslav Republic of

bh

Bahrain

ml

Mali

bi

Burundi

mm

Myanmar

bj

Benin

mn

Mongolia

bn

Brunei Darussalam

mo

Macao

bo

Bolivia, Plurinational State of

mr

Mauritania

br

Brazil

mt

Malta

bt

Bhutan

mu

Mauritius

bw

Botswana

mv

Maldives

by

Belarus

mw

Malawi

bz

Belize

mx

Mexico

ca

Canada

my

Malaysia

cd

Congo, the Democratic Republic of the

mz

Mozambique

cf

Central African Republic

na

Namibia

cg

Congo

ne

Niger

ch

Switzerland

ng

Nigeria

ci

Cote d’Ivoire

ni

Nicaragua

cl

Chile

nl

Netherlands

cm

Cameroon

no

Norway

cn

China

np

Nepal

co

Colombia

nz

New Zealand

cr

Costa Rica

om

Oman

cu

Cuba

pa

Panama

cv

Cape Verde

pe

Peru

cy

Cyprus

pg

Papua New Guinea

cz

Czech Republic

ph

Philippines

de

Germany

pk

Pakistan

dj

Djibouti

pl

Poland

dk

Denmark

pr

Puerto Rico

do

Dominican Republic

ps

Palestine, State of

dz

Algeria

pt

Portugal

ec

Ecuador

py

Paraguay

ee

Estonia

re

Reunion

eg

Egypt

ro

Romania

eh

Western Sahara

rs

Serbia

er

Eritrea

ru

Russian Federation

es

Spain

rw

Rwanda

et

Ethiopia

sa

Saudi Arabia

fi

Finland

sc

Seychelles

fr

France

sd

Sudan

ga

Gabon

se

Sweden

gb

United Kingdom

sg

Singapore

ge

Georgia

sh

Saint Helena, Ascension and Tristan da Cunha

gf

French Guiana

si

Slovenia

gh

Ghana

sk

Slovakia

gl

Greenland

sl

Sierra Leone

gm

Gambia

sm

San Marino

gn

Guinea

sn

Senegal

gq

Equatorial Guinea

so

Somalia

gr

Greece

sr

Suriname

gt

Guatemala

st

Sao Tome and Principe

gu

Guam

sv

El Salvador

gw

Guinea-Bissau

sy

Syrian Arab Republic

gy

Guyana

sz

Swaziland

hk

Hong Kong

td

Chad

hn

Honduras

tg

Togo

hr

Croatia

th

Thailand

ht

Haiti

tj

Tajikistan

hu

Hungary

tl

Timor-Leste

id

Indonesia

tm

Turkmenistan

ie

Ireland

tn

Tunisia

il

Israel

tr

Turkey

in

India

tw

Taiwan (Republic of China)

iq

Iraq

tz

Tanzania, United Republic of

ir

Iran, Islamic Republic of

ua

Ukraine

is

Iceland

ug

Uganda

it

Italy

us

United States

jm

Jamaica

uy

Uruguay

jo

Jordan

uz

Uzbekistan

jp

Japan

va

Holy See (Vatican City State)

ke

Kenya

ve

Venezuela, Bolivarian Republic of

kg

Kyrgyzstan

vn

Viet Nam

kh

Cambodia

ye

Yemen

kp

Korea, Democratic People’s Republic of

yt

Mayotte

kr

Korea, Republic of

za

South Africa

kw

Kuwait

zm

Zambia

kz

Kazakhstan

zw

Zimbabwe

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值