python数据可视化—pygal

2019-07-26  本文已影响0人  小二哥很二

pygal.Line()基本单线型
pygal.StackedLine(fill=True)相同的图形但具有堆叠值和填充渲染
view.x_labels=map(str,range(1,34))设置x轴取值范围

1、单系列

import pygal

frequency = [10, 20, 30, 40, 50, 60]
bar = pygal.Bar()  # 创建一个直方图的实例化对象
bar.title = 'test'  # 设置标题
bar.x_labels = ['1', '2', '3', '4', '5', '6']   //x轴的值
bar.x_title = "Result"  //设置x轴名称
bar.y_title = "Frequency of Result"
bar.add('D', frequency)
bar.render_to_file('bar_chart.svg')  # 将图像保存为SVG文件,可通过浏览器查看

结果:

image.png
2、制作多系列图标
import pygal

view=pygal.Bar()
view.add('orange',[0,1,3,4,6,7,8,9,11,22])
view.add('banana',[1,2,3,4,4,5,6,6,7,16,17])
view.render_in_browser()   //渲染到浏览器
image.png
3、堆叠图表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")
image.png
4、双色球红色球的出现概率
import requests
import pygal
import json

class UniomLotto(object):
    def __init__(self):
        self.url='http://www.cwl.gov.cn/cwl_admin/kjxx/findDrawNotice?' \
                 'name=ssq&issueCount=30'
        self.headers={
            'Referer':'http://www.cwl.gov.cn/kjxx/ssq/kjgg/',
            'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/'
                         '537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36'

        }

    #1.发送数据
    def send_request(self,url):
        return requests.get(url=url,headers=self.headers)

    #2.筛选数据
    def filtrate(self,ball_data):
        red=[]
        data_dict=json.loads(ball_data)
        # print(type(data_dict))  #dict
        data_list=data_dict['result']  #双色球号码在此key的value中
        # print(data_list)
        for i in data_list:     #遍历,取出红色球到列表red中
            red.append(i['red'])
        return red

    #3.可视化
    def visual(self,red):
        # print(red)  #里面的数据为str,没办法操作,所以要转换成int
        red_list=[]
        count={}
        for red in red:
            a=red.split(',')
            for i in a:
                # print(i)
                red_list.append(int(i))
        # print(red_list)   #已经全部转换成int类型

                for j in red_list:
                    count[j]=red_list.count(j)  #统计每个号码出现的次数
        print(count[1],count[2],count[33])

        view=pygal.Bar()
        view.x='num'
        view.x_labels=map(str,range(1,34))
        view.add('red',count.values())
        # view.render_in_browser()   #渲染到浏览器
        view.render_to_file('shuangseqiu.svg')  #以svg文件的形式保存,可以用浏览器打开
    #4.主要的运行方法
    def run(self):
        response=self.send_request(self.url)
        red=self.filtrate(response.content.decode())
        self.visual(red)

if __name__ == '__main__':
    unionlotto=UniomLotto()
    unionlotto.run()
image.png

PS:觉得这篇文章有用的朋友,多多点赞打赏哦~!

上一篇 下一篇

猜你喜欢

热点阅读