您现在的位置是:网站首页> 编程资料编程资料

Python数据可视化之Pyecharts使用详解_python_

2023-05-26 419人已围观

简介 Python数据可视化之Pyecharts使用详解_python_

1. 安装Pyecharts

pip install pyecharts

2. 图表基础

2.1 主题风格

添加主题风格使用的是 InitOpts() 方法,

该方法的主要参数有:

参数描述
width画布宽度,要求字符串格式,如 width=“500px”
height画布高度,要求字符串格式,如 width=“500px”
chart_id图表ID,作为图表的唯一标识。有多个图表时用来区分不同的图表
page_title网页标题,字符串格式
theme图表主题。由ThemeType模块提供
bg_color图表背景颜色,字符串格式

可以选择的风格有:

2.2 图表标题

给图表添加标题需要通过 set_global_options()方法 的 title_opts参数,

该参数的值通过opts模块的TitleOpts()方法生成,

且TitleOpts()方法主要参数语法如下:

2.3 图例

设置图例需要通过 set_global_opts()方法的 legend_opts参数,

该参数的参数值参考options模块的LegendOpts()方法。

LegendOpts() 方法的主要参数如下:

2.4 提示框

设置提示框主要是通过 set_global_opts()方法中的 tooltip_opts参数进行设置,

该参数的参数值参考options模块的TooltipOpts()方法。

TooltipOpts()方法的主要参数如下:

2.5 视觉映射

视觉映射通过 set_global_opts()方法中的 visualmap_opts参数进行设置,

该参数的取值参考options模块的VisualMapOpts()方法。

其主要参数如下:

2.6 工具箱

工具箱通过 set_global_opts()方法中的 toolbox_opts参数进行设置,

该参数的取值参考options模块的ToolboxOpts()方法。

其主要参数如下:

2.7 区域缩放

区域缩放通过 set_global_opts()方法中的 datazoom_opts参数进行设置,

该参数的取值参考options模块的DataZoomOpts()方法。

其主要参数如下:

3. 柱状图 Bar模块

绘制柱状图通过Bar模块来实现,

该模块的主要方法有:

主要方法描述
add_xaxis()x轴数据
add_yaxis()y轴数据
reversal_axis()翻转x、y轴数据
add_dataset()原始数据

下边展示一个简单的示例,先不使用过多复杂的样式:

import numpy as np from pyecharts.charts import Bar from pyecharts import options as opts from pyecharts.globals import ThemeType # 生成数据 years = [2011, 2012, 2013, 2014, 2015] y1 = [1, 3, 5, 7, 9] y2 = [2, 4, 6, 4, 2] y3 = [9, 7, 5, 3, 1] y4 = list(np.random.randint(1, 10, 10)) bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT)) # 为柱状图添加x轴和y轴数据 bar.add_xaxis(years) bar.add_yaxis('A型', y1) bar.add_yaxis('B型', y2) bar.add_yaxis('C型', y3) bar.add_yaxis('D型', y4) # 渲染图表到HTML文件,并保存在当前目录下 bar.render("bar.html") 

生成图像效果如下:

这里有一个无法解释的细节,就是可以看到y4数据,即D型,在图像中没有显示出来。经过小啾的反复尝试,发现凡是使用随机数产生的数据再转化成列表,这部分随机数不会被写入到html文件中:

既然不会解释,那就避免。

4. 折线图/面积图 Line模块

Line模块的主要方法有add_xaxis() 和 add_yaxis(),分别用来添加x轴数据和y轴数据。

add_yaxis()的主要参数如下:

4.1 折线图

绘制折线图时,x轴的数据必须是字符串,图线方可正常显示。

from pyecharts.charts import Line from pyecharts import options as opts from pyecharts.globals import ThemeType # 准备数据 x = [2011, 2012, 2013, 2014, 2015] x_data = [str(i) for i in x] y1 = [1, 3, 2, 5, 8] y2 = [2, 6, 5, 6, 7] y3 = [5, 7, 4, 3, 1] line = Line(init_opts=opts.InitOpts(theme=ThemeType.ESSOS)) line.add_xaxis(xaxis_data=x_data) line.add_yaxis(series_name="A类", y_axis=y1) line.add_yaxis(series_name="B类", y_axis=y2) line.add_yaxis(series_name="C类", y_axis=y3) line.render("line.html") 

生成图像效果如下:

4.2 面积图

绘制面积图时需要在add_yaxis()方法中指定areastyle_opts参数。其值由options模块的AreaStyleOpts()方法提供。

from pyecharts.charts import Line from pyecharts import options as opts from pyecharts.globals import ThemeType x = [2011, 2012, 2013, 2014, 2015] x_data = [str(i) for i in x] y1 = [2, 5, 6, 8, 9] y2 = [1, 4, 5, 4, 7] y3 = [1, 3, 4, 6, 6] line = Line(init_opts=opts.InitOpts(theme=ThemeType.WONDERLAND)) line.add_xaxis(xaxis_data=x_data) line.add_yaxis(series_name="A类", y_axis=y1, areastyle_opts=opts.AreaStyleOpts(opacity=1)) line.add_yaxis(series_name="B类", y_axis=y2, areastyle_opts=opts.AreaStyleOpts(opacity=1)) line.add_yaxis(series_name="C类", y_axis=y3, areastyle_opts=opts.AreaStyleOpts(opacity=1)) line.render("line2.html") 

图像效果如下:

5.饼形图

5.1 饼形图

绘制饼形图使用的是Pie模块,该模块中需要使用的主要方法是add()方法

该方法主要参数如下:

主要参数描述
series_name系列名称。用于提示文本和图例标签。
data_pair数据项,格式为形如[(key1,value1),(key2,value2)]
color系列标签的颜色。
radius饼图的半径。默认设成百分比形式,默认是相对于容器的高和宽中较小的一方的一半
rosetype是否展开为南丁格尔玫瑰图,可以取的值有radius货area,radius表示通过扇区圆心角展现数据的大小,即默认的扇形图;area表示所有扇区的圆心角的角度相同,通过半径来展现数据大小
from pyecharts.charts import Pie from pyecharts import options as opts from pyecharts.globals import ThemeType x_data = ['AAA', 'BBB', 'CCC', 'DDD', 'EEE', 'FFF'] y_data = [200, 200, 100, 400, 500, 600] # 将数据转换为目标格式 data = [list(z) for z in zip(x_data, y_data)] # 数据排序 data.sort(key=lambda x: x[1]) pie = Pie(init_opts=opts.InitOpts(theme=ThemeType.MACARONS)) pie.add( series_name="类别", # 序列名称 data_pair=data, # 数据 ) pie.set_global_opts( # 饼形图标题 title_opts=opts.TitleOpts( title="各类别数量分析", pos_left="center"), # 不显示图例 legend_opts=opts.LegendOpts(is_show=False), ) pie.set_series_opts( # 序列标签 label_opts=opts.LabelOpts(), ) pie.render("pie.html") 

图像效果如下:

5.2 南丁格尔玫瑰图

from pyecharts.charts import Pie from pyecharts import options as opts from pyecharts.globals import ThemeType x_data = ['AAA', 'BBB', 'CCC', 'DDD', 'EEE', 'FFF', 'GGG', 'HHH', 'III', 'JJJ', 'KKK', 'LLL', 'MMM', 'NNN', 'OOO'] y_data = [200, 100, 400, 50, 600, 300, 500, 700, 800, 900, 1000, 1100, 1200, 1300, 1500] # 将数据转换为目标格式 data = [list(z) for z in zip(x_data, y_data)] # 数据排序 data.sort(key=lambda x: x[1]) # 创建饼形图并设置画布大小 pie = Pie(init_opts=opts.InitOpts(theme=ThemeType.ROMANTIC, width='300px', height='400px')) # 为饼形图添加数据 pie.add( series_name="类别", data_pair=data, radius=["8%", "160%"], # 内外半径 center=["65%", "65%"], # 位置 rosetype='area', # 玫瑰图,圆心角相同,按半径大小绘制 color='auto' # 颜色自动渐变 ) pie.set_global_opts( # 不显示图例 legend_opts=opts.LegendOpts(is_show=False), # 视觉映射 visualmap_opts=opts.VisualMapOpts(is_show=False, min_=100, # 颜色条最小值 max_=450000, # 颜色条最大值 ) ) pie.set_series_opts( # 序列标签 label_opts=opts.LabelO
                
                

-六神源码网