Pyecharts图表绘制实战

目录

1、实验背景

2、实验简介

3、实验样例

3.1 实训1:绘制统计某天多省区连续确诊病例无新增天数的玫瑰图

3.2 实训2:App下载量数据可视化分析


 

1、实验背景

      在当今数据驱动的时代,数据可视化已经成为理解和传达复杂信息不可或缺的手段之一。随着大数据技术的发展以及数据分析需求的增长,一款易用且功能强大的数据可视化工具显得尤为重要。PyEcharts(Python Echarts)作为基于百度ECharts的Python接口库,凭借其丰富的图表类型、绚丽的视觉效果以及高度可定制化的特点,在众多的数据可视化解决方案中脱颖而出。

2、实验简介

       本篇文章旨在通过PyEcharts工具应用,即“实训1:绘制统计某天多省区连续确诊病例无新增天数的玫瑰图”和“实训2:App下载量数据可视化分析”两个案例,引领读者深入了解并熟练掌握如何使用PyEcharts进行高效的数据可视化工作。我们将结合实际案例,探讨如何利用PyEcharts将大量枯燥的数据转换为直观生动的图表,如玫瑰图、柱状图、饼图、散点图等各种图表类型,进而揭示数据背后的深层次关系与规律。      

       通过一系列详尽的实验步骤和应用场景解析,助力读者快速入门Pyecharts的基础操作,还将进一步体验到其在复杂数据处理、动态交互式图表构建等方面的强大功能,力求让每一位读者都能借此提升自身在数据分析领域中数据可视化实践的能力,希望本篇文章对您有帮助。

3、实验样例

3.1 实训1:绘制统计某天多省区连续确诊病例无新增天数的玫瑰图

(1)导入进行数据分析和绘制饼图所需的库和模块,其中包括pandas数据分析库、pyecharts图表绘制库。

import pandas as pd  # 导入pandas库,并用pd作为其简称。pandas是一个强大的数据分析库。
from pyecharts.charts import Pie  # 从pyecharts.charts模块中导入Pie类。pyecharts是一个用于生成Echarts图表的类库。Echarts是一个由百度开源的数据可视化工具,可以生成简洁美观的图表。这里导入的Pie类,是用来生成饼图的。
from pyecharts import options as opts  # 从pyecharts库中导入options模块,并用opts作为其简称。options模块提供了丰富的选项用于自定义图表的各种属性,如标题,图例,提示框,视觉映射,数据缩放,数据区域等。

(2)首先创建三个列表:省份名称列表provinces,确认病例连续多日零新增的数字列表num,以及颜色列表color_series,这些列表将用于后续的数据分析和绘图。

# 省份名称列表
provinces = ['北京','上海','黑龙江','吉林','辽宁','内蒙古','新疆','西藏','青海','四川','云南','陕西','重庆',
'贵州','广西','海南','澳门','湖南','江西','福建','安徽','浙江','江苏','宁夏','山西','河北','天津']
# 确诊病例连续多日零新增的数字列表
num = [1,1,1,17,9,22,23,42,35,7,20,21,16,24,16,21,37,12,13,14,13,7,22,8,16,13,13]
# 颜色列表,用于后续的绘图使用
color_series = ['#FAE927','#E9E416','#C9DA36','#9ECB3C','#6DBC49',
'#37B44E','#3DBA78','#14ADCF','#209AC9','#1E91CA',
'#2C6BA0','#2B55A1','#2D3D8E','#44388E','#6A368B'
'#7D3990','#A63F98','#C31C88','#D52178','#D5225B',
'#D02C2A','#D44C2D','#F57A34','#FA8F2F','#D99D21',
'#CF7B25','#CF7B25','#CF7B25']

(3)接着使用pandas库的DataFrame函数,将provinces和num两个列表合并为一个数据框df,其中'provinces'和'num'是数据框的列名;并使用sort_values函数对数据框df进行降序排序,排序依据是'num'列,即按照确认病例连续多日零新增的数字进行排序,排序结果直接修改原数据框。

# 创建数据框
df = pd.DataFrame({'provinces': provinces, 'num': num})
# 降序排序
df.sort_values(by='num', ascending=False, inplace=True)

(4)提取排序后的数据框的'provinces'列和'num'列的值,转化为列表v和d,这两个列表将用于后续的绘图。

# 提取数据
v = df['provinces'].values.tolist()
d = df['num'].values.tolist()

(5)实例化Pie类,创建一个Pie对象pie,设置其宽度和高度为1250px和750px;接着使用set_colors方法设置饼图的颜色,颜色来源于之前创建的颜色列表color_series;并使用add方法向饼图中添加数据,数据来源于之前排序后的省份列表v和确诊病例连续多日零新增的数字列表d,设置饼图的半径为30%到100%,将饼图的中心放在图表的50%位置,设置展示为玫瑰图。

# 实例化Pie类
pie = Pie(init_opts=opts.InitOpts(width='1250px', height='750px'))
# 设置颜色
pie.set_colors(color_series)
# 添加数据,设置饼图的半径,是否展示玫瑰图
pie.add("", [list(z) for z in zip(v, d)],
radius=["30%", "100%"],
center=["50%", "50%"],
rosetype="area")

(6)接下来使用set_global_opts方法设置全局配置项,包括标题,副标题,标题样式,副标题样式,标题位置,图例和工具箱等;使用set_series_opts方法设置系列配置项,包括标签的显示,位置,字体大小,格式,字体样式,字体粗细,字体家族等。

# 设置全局配置项
pie.set_global_opts(title_opts=opts.TitleOpts(title='多省区市\n确诊病例连续多日',subtitle='零新增',
                                              title_textstyle_opts=opts.TextStyleOpts(font_size=25,color='#0085c3'),
                                              subtitle_textstyle_opts=opts.TextStyleOpts(font_size=50,color='#003399'),
                                              pos_right='center',pos_left='center',pos_top='42%',pos_bottom='center'),
                    legend_opts=opts.LegendOpts(is_show=False),
                    toolbox_opts=opts.ToolboxOpts())
# 设置系列配置项
pie.set_series_opts(label_opts=opts.LabelOpts(is_show=True, position="inside", font_size=12,
formatter="{b}:{c}天", font_style="italic",
font_weight="bold", font_family="SimHei"))

(7)最后使用render_notebook方法在Jupyter notebook中渲染并显示饼图,如果需要生成html文档,可以使用render方法,将饼图保存为html文件。这里的"玫瑰图.html"是注释掉的,如果需要保存,可以去掉注释。

pie.render_notebook()
# 生成html文档
# pie1.render('玫瑰图.html')

(8)代码运行输出结果示例如下:

 

3.2 实训2:App下载量数据可视化分析

(1)绘制数据的柱状图

       首先从pyecharts库中导入options和Bar,然后定义了x轴数据x_data,这是一个包含了不同App类别的列表,同时定义了y轴数据sum_app,这是一个包含了对应App类别的下载数量的列表。

from pyecharts import options as opts
from pyecharts.charts import Bar
%matplotlib inline

# x轴数据
x_data = ["相机", "短视频", "视频", "浏览器", "商城", "购票", "小说", "聊天", "小工具", "理财记账"] 
# y轴数据
sum_app = [[5045137.0], [4608092.0], [35723063.0], [23775808.0], [15367847.0], [10424808.0], [76975429.0], [7393185.0], [64636392.0], [50491990.0]]

       接着创建一个Bar对象bar,这是一个柱状图的实例,其中init_opts参数用于初始化设置,设置了主题为浅色主题。并使用add_xaxis方法添加x轴的数据,这里的数据是一个包含了"App类别"的列表。同时遍历x轴的数据,对于每一个App类别,使用add_yaxis方法添加y轴的数据,这里的数据是对应App类别的下载数量。

# 生成实例化对象
bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
bar.add_xaxis([ "App类别"])
for x in x_data:
    bar.add_yaxis(x,sum_app[x_data.index(x)])

       使用set_global_opts方法设置全局配置项,包括标题和副标题。使用render_notebook方法在Jupyter notebook中渲染并显示柱状图,如果需要生成html文档,可以使用render方法,将柱状图保存为html文件。这里的"APP类型.html"是注释掉的,如果需要保存,可以去掉注释。

bar.set_global_opts(title_opts=opts.TitleOpts(title="App类型", subtitle="下载数量"))  
# bar.render("APP类型.html")
bar.render_notebook()

代码运行示例如下:

(2)绘制各类App下载量的饼图

       首先从pyecharts库中导入Pie,然后定义x轴数据x_data,这是一个包含了不同App类别的列表,同时定义y轴数据sum_app,这是一个包含了对应App类别的下载数量的列表。

from pyecharts.charts import Pie

# x轴数据
x_data = ["相机", "短视频", "视频", "浏览器", "商城", "购票", "小说", "聊天", "小工具", "理财记账"] 
# y轴数据
sum_app = [[5045137.0], [4608092.0], [35723063.0], [23775808.0], [15367847.0], [10424808.0], [76975429.0], [7393185.0], [64636392.0], [50491990.0]]

       接着创建一个Pie对象pie,这是一个饼图的实例,其中init_opts参数用于初始化设置,设置主题为信息图主题。然后使用add方法添加数据,数据是一个包含了App类别和对应下载数量的元组列表,设置饼图的半径为30%到75%,将饼图的中心放在图表的50%位置,设置展示为半径模式的玫瑰图,标签不显示。

# 生成实例化对象
pie = Pie(init_opts=opts.InitOpts(theme=ThemeType.INFOGRAPHIC))
pie.add( "",data_pair = 
[(x,sum_app[x_data.index(x)]) for x in x_data],    
         radius=["30%", "75%"], 
center=["50%", "50%"],       
rosetype="radius",
label_opts=opts.LabelOpts(is_show=False))

       然后使用set_global_opts方法设置全局配置项,包括标题和图例的位置;并使用set_series_opts方法设置系列配置项,包括标签的格式;设置完成后使用render_notebook方法在Jupyter notebook中渲染并显示饼图。

pie.set_global_opts(title_opts = opts.TitleOpts(title="App下载数量占比"),legend_opts = opts.LegendOpts(pos_top="3.5%"))
pie.set_series_opts(label_opts = opts.LabelOpts(formatter="{b}: {c}"))
pie.render_notebook()

代码运行示例如下:

(3)绘制各类App下载量的涟漪特效散点图

       首先从pyecharts库中导入EffectScatter,然后定义x轴数据x_data,这是一个包含了不同App类别的列表,同时定义y轴数据sum_app,这是一个包含了对应App类别的下载数量的列表。

from pyecharts.charts import EffectScatter

# x轴数据
x_data = ["相机", "短视频", "视频", "浏览器", "商城", "购票", "小说", "聊天", "小工具", "理财记账"] 
# y轴数据
sum_app = [[5045137.0], [4608092.0], [35723063.0], [23775808.0], [15367847.0], [10424808.0], [76975429.0], [7393185.0], [64636392.0], [50491990.0]]

       其次创建一个EffectScatter对象c,这是一个动态散点图的实例。然后使用add_xaxis方法添加x轴的数据,这里的数据是包含了App类别的列表。接着,使用add_yaxis方法添加y轴的数据,这里的数据是对应App类别的下载数量,颜色设置为False,表示不使用颜色。

# 实例化对象
c = EffectScatter()
c.add_xaxis(x_data)
c.add_yaxis("",sum_app,color=False)

       然后使用set_global_opts方法设置全局配置项,包括标题。

c.set_global_opts(title_opts = opts.TitleOpts(title="App下载数量"))

       最后使用render_notebook方法在Jupyter notebook中渲染并显示动态散点图。

c.render_notebook()

代码运行示例如下:

  • 28
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值