Python中Pygal库的简单使用

  1. 绘制直方图

绘制一个直方图分析掷骰子结果

先创建一个骰子类,然后创建一个实例,得出掷骰子1000次的结果

from random import randint
import pygal

class Die():
    def __init__(self,num_sides=6):
        self.num_sides=num_sides

    def roll(self):
        #返回一个位于1和骰子面数之间的随机值
        return randint(1,self.num_sides)

die=Die()

results=[]
for roll_num in range(1000):
    result=die.roll()
    results.append(result)

#分析结果
frequencies=[]
for value in range(1,die.num_sides+1):
    frequency=results.count(value)
    frequencies.append(frequency)

然后用一个条形图可视化显示数据

#创建条形图实例
hist=pygal.Bar()

#设置标题
hist.title='Results of rolling one D6 1000 times'
#x轴标签
hist.x_labels=['1','2','3','4','5','6']
hist.x_title='Result'
hist.y_title='Frequency of Result'

hist.add('D6',frequencies)
hist.render_to_file('die_visual.svg')

 将这个图表渲染为一个die_visual.svg文件,生成的文件与代码位于同一目录下,在浏览器打开如下

Python中Pygal库的简单使用_第1张图片

同时掷两个八面骰子

die1=Die(8)
dei2=Die(8)

results=[]
for roll_num in range(1000):
    result=die1.roll()+dei2.roll()
    results.append(result)

#分析结果
frequencies=[]
sum_sides=die1.num_sides+dei2.num_sides
for value in range(2,sum_sides+1):
    frequency=results.count(value)
    frequencies.append(frequency)

#创建条形图实例
hist=pygal.Bar()

#设置标题
hist.title='Results of rolling one D6 1000 times'
#x轴标签
hist.x_labels=[x for x in range(2,17)]
hist.x_title='Result'
hist.y_title='Frequency of Result'

hist.add('D6',frequencies)
hist.render_to_file('die_visual.svg')

Python中Pygal库的简单使用_第2张图片

2.绘制世界人口地图:JSON格式

import json
from pygal_maps_world.i18n import COUNTRIES
import pygal_maps_world.maps

#返回两位数国别码,Pygal中地图是根据国别码绘图的
def get_country_code(country_name):
    for code,name in COUNTRIES.items():
        if name ==country_name:
            return code
    return None

filename='population_data.json'
# json.load() 将数据转换为Python能够处理的格式
with open(filename) as f:
    pop_data=json.load(f)

cc_populations={}
#得到国别码和对应人口数量并存储在字典中
for pop_dict in pop_data:
    if pop_dict['Year']=='2010':
        country_name=pop_dict['Country Name']
        country_population=int(float(pop_dict['Value']))
        code=get_country_code(country_name)
        if code:
            cc_populations[code]=country_population

#创建一个实例
wm=pygal_maps_world.maps.World()
#设置标题
wm.title='World Population in 2010, by Country'

wm.add('2010',cc_populations)
wm.render_to_file('americas.svg')

Python中Pygal库的简单使用_第3张图片

 

你可能感兴趣的:(Python,python)