Pyecharts 可视化

本文介绍了Pyecharts,一个用于生成Echarts图表的Python库,详细讲解了如何使用Pyecharts绘制柱状图、饼图、折线图、地图等,并提供了多个实例,包括全国及全球疫情数据的可视化展示。
摘要由CSDN通过智能技术生成
一、Pyecharts 认识

Pyecharts 是一个用于生成 Echarts 图表的类库

Echarts 是百度开源的一个数据可视化 JS 库,主要用于数据可视化,Pyecharts 是一 个用于生成 Echarts 图表的类库。实际上就是 Echarts 与 Python 的对接

使用 Pyecharts 可以生成独立的网页,也可以在 flask , Django 中集成使用

安装:pip install pyecharts==1.5

二、Pyecharts图表绘制准备

1、全局配置项

全局配置项可通过 set_global_options 方法设置

主要配置的内容为:

2、系列配置项

可以使用 set_series_options 方法设置

主要用来配置用来配置字体、颜色、线条灯具体的参数

3、注意:数据格式

Pyecharts 本质上在做的事情就是将 Echarts 的配置项由 Python dict 序列化为 JSON 格式,所以 Pyecharts 支持什么格式的数据类型取决于 JSON 支持什么数据类型

Pyecharts 是一个通用的第三方库,我们不可能关心开发者的所有使用场景,这个转换 需要我们引入 numpy/pandas 两个第三方库,而这两个库太重要了,所以我们将这个工作交 给了开发者

具体转换方式:

可以使用 Series.tolist()进行快速转换

4、更多配置

更多配置理解可参考:http://pyecharts.org/#/zh-cn/

颜色对照表课参考:http://www.fynas.com/system-drawing-color

三、柱状图

以绘制某商家 A、商家 B 的各类商品售卖数量为例,绘制柱状图

衬衫 毛衣 领带 裤子 风衣 高跟鞋 袜子
商家 A 114 55 27 101 125 27 105
商家 B 57 134 137 129 145 60 49

代码实现:

from pyecharts import options as opts  # 配置模块
from pyecharts.charts import Bar

# 1、实例化bar对象
bar = Bar()

# 2、添加数据
# 横轴数据
bar.add_xaxis(
    xaxis_data=['衬衫', '毛衣', '领带', '裤子', '风衣', '高跟鞋', '袜子']
)

# 添加纵轴数据
bar.add_yaxis(
    series_name='商家A',  # 柱子名称
    yaxis_data=[114, 55, 27, 101, 125, 27, 105],  # 商家A的数据
)

# 添加纵轴数据
bar.add_yaxis(
    series_name='商家B',  # 柱子名称
    yaxis_data=[57, 134, 137, 129, 145, 60, 49],  # 商家A的数据
)

# 3、全局配置项
bar.set_global_opts(
    # 设置标题
    title_opts=opts.TitleOpts(
        title='Bar测试'
    )
)

# 4、系列配置项
bar.set_series_opts(
    # 设置标签
    label_opts=opts.LabelOpts(
        is_show=True,
        position='right', # 标签位置
    )
)

# 设置方向
bar.reversal_axis()

# 5、生成文件
bar.render('./柱状图.html')
四、饼图

以各个地区分校的 Python 系统班人数统计数据为例,绘制饼图

各个地区分校人数统计表

地区分校 Python系统班人数
北京 130
河南 65
广州 60
武汉 23
成都 30
杭州 33

代码实现:

# 导包
from pyecharts import options as opts
from pyecharts.charts import Pie
from pyecharts.globals import ThemeType  # 主题模块
import pandas as pd

# 1、实例化对象
pie = Pie(
    # 初始化配置
    init_opts=opts.InitOpts(
        width='1200px',  # 画布宽度
        height='500px',  # 画布高度
        # theme='white',  # 主题  ,设置方式
        theme=ThemeType.WHITE,  # 主题,设置方式
        page_title='Python分校人数占比饼图',
        # bg_color='#F0F8FF',  # 背景颜色
    )
)

# 加载分校数据
data = pd.read_excel('./Python地区分校人数.xlsx')
print('data:\n', data)
# for tmp in zip(data.loc[:,'分校'].tolist(),data.loc[:,'人数'].tolist()):
#     print(tmp)

data_pair = [(k, v) for k, v in zip(data.loc[:, '分校'].tolist(), data.loc[:, '人数'].tolist())]
print('data_pair:\n', data_pair)

# 2、添加数据
pie.add(
    series_name=data.loc[:, '分校'].tolist(),  # 图例名称
    data_pair=data_pair,  # 数据 ,格式为:[(k1,v1),(k2,v2),...],
    radius=['30%', '70%'],  # 半径,第一个为内径,第二个为外径,通常设置为百分数
    is_clockwise=True,  # 顺时针排布
)

# 3、设置全局配置项
pie.set_global_opts(
    # 设置标题
    title_opts=opts.TitleOpts(
        title='Python分校人数占比饼图',  # 标题名称
        subtitle='广州分校Python0421班级',  # 子标题
        pos_left='left',  # 位置
    ),
    # 设置图例
    legend_opts=opts.LegendOpts(
        is_show=True,  # 展示图例
        pos_left='center',  # 位置 --居中
    )
)

# 4、设置系列配置项
pie.set_series_opts(
    # 设置标签
    label_opts=opts.LabelOpts(
        is_show=True,  # 展示标签
        font_size=12,  # 字体大小
        font_style='italic',  # 字体风格,倾斜
        formatter='{b}:{d}%',  # 显示的样式 {a}系列名称 {b}数据项名称 {c}数值 {d}百分比
    )
)

# 5、生成文件
pie.render('./Python分校人数占比饼图.html')
五、折线图

新型冠状病毒肺炎(Corona Virus Disease 2019,COVID-19),简称“新冠肺炎”,是指 2019 新型冠状病毒感染导致的肺炎,2019 年 12 月以来,湖北省武汉市部分医院陆续发 现了多例有华南海鲜市场暴露史的不明原因肺炎病例,现已证实为2019 新型冠状病毒感染 引起的急性呼吸道传染病

为此,湖北政府、各省、乃至国家对于新冠状病毒的疫情的发展状况非常重视,对于患
病人员迅速采取隔离、治疗

此案例,借助国家发布数据(部分),对于疫情数据进行统计分析

以截至2020年2月 6 日 10 时 49 分的全国疫情统计数据为例,绘制折线图、柱状图

中国疫情数据每日变化统计表

城市 时间 死亡数 治愈数 疑似数 省份 确诊数
全国 2020-02-06 564 1180 24702 全国 28060
全国 2020-02-05 564 1153 24702 全国 28060
全国 2020-02-04 491 892 23260 全国 24363
全国 2020-02-03 425 630 23214 全国 20471
全国 2020-02-02 361 475 21558 全国 17238
全国 2020-02-01 304 328 19544 全国 14411
全国 2020-01-31 259 243 17988 全国 11821
全国 2020-01-30 213 171 15238 全国 9720
全国 2020-01-29 170 124 12167 全国 7736
全国 2020-01-28 132 103 9239 全国 5997
全国 2020-01-27 106 51 6973 全国 4535
全国 2020-01-26 80 49 5794 全国 2761
全国 2020-01-25 56 38 2684 全国 1985
全国 2020-01-24 41 38 1965 全国 1297
全国 2020-01-23 25 34 1072 全国 830

代码实现:

# 绘图模块
from pyecharts.charts import *
# 配置模块
from pyecharts import options as opts
# 主题模块
from pyecharts.globals import ThemeType

import pandas as pd

# 1、实例化对象
bar = Bar(
    # init_opts=opts.InitOpts(
    #     width='2000px',
    #     # height='700px'
    # )
)

# 加载数据
history_data = pd.read_excel('./疫情历史数据.xls', index_col=0)
print('history_data:\n', history_data)

# 获取横轴数据
# (1)获取到时间数据,然后修改其类型为 str
x_data = history_data.loc[:, '时间'].astype('str')
# (2)反过来
x_data = x_data[::-1].tolist()

print('x_data:\n', x_data)

# 准备纵轴数据
# 死亡数据
death_data = history_data.loc[:, '死亡数'][::-1].tolist()
print('death_data:\n', death_data)
# 确诊数据
ensure_data = history_data.loc[:, '确诊数'][::-1].tolist()
print('ensure_data:\n', ensure_data)
# 疑似数据
suspected_data = history_data.loc[:, '疑似数'][::-1].tolist()
print('suspected_data:\n', suspected_data)
# 治愈数据
cure_data = history_data.loc[:, '治愈数'][::-1].tolist()
print('cure_data:\n', cure_data)

# 2、添加数据
# 横轴数据
bar.add_xaxis(
    xaxis_data=x_data,  # 横轴数据
)

# 纵轴数据
bar.add_yaxis(
    series_name='死亡数',  # 图例名称
    yaxis_data=death_data,  # 数据
    yaxis_index=1,  # 表示多个纵轴时,选择第1个纵轴作为死亡数的参考
)

bar.add_yaxis(
    series_name='治愈数',  # 图例名称
    yaxis_data=cure_data,  # 数据
    yaxis_index=2,  # 表示多个纵轴时,选择第2个纵轴作为 治愈数的参考
)

# 增加纵轴
bar.extend_axis(
    # 增加一个纵轴
    yaxis=opts.AxisOpts(
        type_='value',  # 坐标轴的类型
        name='死亡数',  # 坐标轴的名称
        min_=0,  # 最小值
        max_=1200,  # 最大值,
        position='right',  # 位置,右边
        offset=0,
        # 坐标线设置
        axisline_opts=opts.AxisLineOpts(
            is_show=True,  # 显示坐标线,
            # 坐标线的风格
            linestyle_opts=opts.LineStyleOpts(
                color='#a5a391',  # 线的颜色
            )
        ),
        # 坐标线上标签设置
        axislabel_opts=opts.LabelOpts(
            is_show=True,  # 展示轴线标签
            position='top',  # 标签位置
            formatter='{value}'  # 标签值
        )
    )
)
bar.extend_axis(
    # 增加一个纵轴
    yaxis=opts.AxisOpts(
        type_='value',  # 坐标轴的类型
        name='治愈数',  # 坐标轴的名称
        min_=0,  # 最小值
        max_=1200,  # 最大值,
        position='right',  # 位置,右边
        offset=60,
        # 坐标线设置
        axisline_opts=opts.AxisLineOpts(
            is_show=True,  # 显示坐标线,
            # 坐标线的风格
            linestyle_opts=opts.LineStyleOpts(
                color='#fd5956',  # 线的颜色
            )
        ),
        # 坐标线上标签设置
        axislabel_opts=opts.LabelOpts(
            is_show=True,  # 展示轴线标签
            position='top',  # 标签位置
            formatter='{value}'  # 标签值
        )
    )
)

bar.extend_axis
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值