基于Python pyecharts实现多种图例代码解析

1. pyecharts简介

pyecharts是一个基于Python的开源数据可视化库,它是在echarts基础上进行开发的,可以使用Python代码快速生成各种各样的图表。pyecharts支持多种图表类型,包括折线图、柱状图、散点图、地图等等。同时,pyecharts还可以与Jupyter Notebook无缝集成,支持在线展示和交互式可视化分析。

2. pyecharts安装

在使用pyecharts之前,需要先安装pyecharts库。可以通过pip命令进行安装:

pip install pyecharts

另外,为了方便进行在线展示和交互式可视化分析,还需要安装Jupyter Notebook:

pip install jupyter notebook

3. 折线图

折线图是一种常用的统计图表,可以用来展示数据的变化趋势。下面是使用pyecharts生成折线图的代码示例:

from pyecharts.charts import Line

from pyecharts import options as opts

# 构造x、y轴数据

x_data = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun']

y_data = [10, 20, 30, 40, 50, 60]

# 创建Line对象

line = Line()

# 添加x、y轴数据及图例

line.add_xaxis(x_data)

line.add_yaxis('sales', y_data)

# 设置全局配置项

line.set_global_opts(title_opts=opts.TitleOpts(title='Sales Trend'))

# 展示图表

line.render_notebook()

该代码示例中,我们首先构造了x、y轴的数据,然后创建了一个Line对象。使用add_xaxis方法和add_yaxis方法分别添加x、y轴的数据。其中,图例的名称为'sales'。最后,使用set_global_opts方法设置全局配置项,包括设置图表的标题为'Sales Trend'。最后,使用render_notebook方法展示图表。值得注意的是,pyecharts支持直接在Jupyter Notebook中展示图表,但是需要使用render_notebook方法,而不是render方法。

3.1 折线图中的多条折线

在折线图中,可以同时展示多条折线,如下面的代码示例所示:

from pyecharts.charts import Line

from pyecharts import options as opts

# 构造x、y轴数据

x_data = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun']

y_data1 = [10, 20, 30, 40, 50, 60]

y_data2 = [5, 15, 25, 35, 45, 55]

# 创建Line对象

line = Line()

# 添加x轴数据及图例

line.add_xaxis(x_data)

line.add_yaxis('sales1', y_data1)

line.add_yaxis('sales2', y_data2)

# 设置全局配置项

line.set_global_opts(title_opts=opts.TitleOpts(title='Sales Trend'))

# 展示图表

line.render_notebook()

在该代码示例中,我们在y_data1和y_data2中分别存储了两个折线的y轴数据。然后,使用两次add_yaxis方法分别添加两条折线的Y轴数据及对应的图例。最后,展示图表时,我们可以同时看到两条折线的趋势。

4. 柱状图

柱状图也是一种常用的统计图表,可以用来展示数据在不同类别间的比较情况。下面是使用pyecharts生成柱状图的代码示例:

from pyecharts.charts import Bar

from pyecharts import options as opts

# 构造x、y轴数据

x_data = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun']

y_data = [10, 20, 30, 40, 50, 60]

# 创建Bar对象

bar = Bar()

# 添加x、y轴数据及图例

bar.add_xaxis(x_data)

bar.add_yaxis('sales', y_data)

# 设置全局配置项

bar.set_global_opts(title_opts=opts.TitleOpts(title='Sales Trend'))

# 展示图表

bar.render_notebook()

该代码示例与折线图类似,首先构造了x、y轴的数据,然后创建了一个Bar对象。使用add_xaxis方法和add_yaxis方法分别添加x、y轴的数据。其中,图例的名称为'sales'。最后,使用set_global_opts方法设置全局配置项,包括设置图表的标题为'Sales Trend'。最后,使用render_notebook方法展示图表。

4.1 柱状图中的多组柱子

与折线图类似,柱状图中也可以展示多组柱子,如下面的代码示例所示:

from pyecharts.charts import Bar

from pyecharts import options as opts

# 构造x、y轴数据

x_data = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun']

y_data1 = [10, 20, 30, 40, 50, 60]

y_data2 = [5, 15, 25, 35, 45, 55]

# 创建Bar对象

bar = Bar()

# 添加x轴数据及图例

bar.add_xaxis(x_data)

bar.add_yaxis('sales1', y_data1)

bar.add_yaxis('sales2', y_data2)

# 设置全局配置项

bar.set_global_opts(title_opts=opts.TitleOpts(title='Sales Trend'))

# 展示图表

bar.render_notebook()

该代码示例与折线图中的多条折线类似,我们在y_data1和y_data2中分别存储了两组柱子的y轴数据。然后,使用两次add_yaxis方法分别添加两组柱子的Y轴数据及对应的图例。最后,展示图表时,我们可以同时看到两组柱子的趋势。需要注意的是,柱状图中的多组柱子需要使用add_yaxis方法添加,并且需要为每组柱子指定一个图例,以便于区分不同的组别。

5. 散点图

散点图可以用来展示两个变量之间的关系,例如展示身高和体重之间的相关性。使用pyecharts生成散点图非常简单,如下面的代码示例所示:

from pyecharts.charts import Scatter

from pyecharts import options as opts

from pyecharts.commons.utils import JsCode

# 构造x、y轴数据

x_data = [1, 2, 3, 4, 5, 6]

y_data = [10, 20, 30, 40, 50, 60]

# 创建Scatter对象

scatter = Scatter()

# 添加x、y轴数据及图例

scatter.add_xaxis(x_data)

scatter.add_yaxis('scatter', y_data,

symbol_size=JsCode('data => Math.sqrt(data[1])'),

label_opts=opts.LabelOpts(formatter=JsCode('''

function(param) {

return param.value[1].toFixed(2);

}

'''))

)

# 设置全局配置项

scatter.set_global_opts(title_opts=opts.TitleOpts(title='Scatter Plot'))

# 展示图表

scatter.render_notebook()

代码示例中,我们创建了一个Scatter对象,并使用add_xaxis方法和add_yaxis方法分别添加x、y轴的数据。其中,散点的大小使用了JsCode方法计算,并且设置了标签的格式化方式。最后,设置了全局配置项,并展示图表。

5.1 散点图中的多组散点

与折线图和柱状图类似,散点图也可以展示多组散点,如下面的代码示例所示:

from pyecharts.charts import Scatter

from pyecharts import options as opts

from pyecharts.commons.utils import JsCode

# 构造x、y轴数据

x_data = [1, 2, 3, 4, 5, 6]

y_data1 = [10, 20, 30, 40, 50, 60]

y_data2 = [5, 15, 25, 35, 45, 55]

# 创建Scatter对象

scatter = Scatter()

# 添加x、y轴数据及图例

scatter.add_xaxis(x_data)

scatter.add_yaxis('scatter1', y_data1,

symbol_size=JsCode('data => Math.sqrt(data[1])'),

label_opts=opts.LabelOpts(formatter=JsCode('''

function(param) {

return param.value[1].toFixed(2);

}

'''))

)

scatter.add_yaxis('scatter2', y_data2,

symbol_size=JsCode('data => Math.sqrt(data[1])'),

label_opts=opts.LabelOpts(formatter=JsCode('''

function(param) {

return param.value[1].toFixed(2);

}

'''))

)

# 设置全局配置项

scatter.set_global_opts(title_opts=opts.TitleOpts(title='Scatter Plot'))

# 展示图表

scatter.render_notebook()

该代码示例与柱状图中的多组柱子类似,我们在y_data1和y_data2中分别存储了两组散点的y轴数据。然后,使用两次add_yaxis方法分别添加两组散点的Y轴数据及对应的图例。最后,展示图表时,我们可以同时看到两组散点的分布情况。

6. 地图

地图可以用来展示地理位置信息,例如展示不同市县的人口分布情况。使用pyecharts生成地图非常简单,如下面的代码示例所示:

from pyecharts.charts import Map

from pyecharts import options as opts

# 构造数据

province_data = [('广东', 100),

('北京', 80),

('上海', 70),

('浙江', 60),

('福建', 50),

('湖南', 40),

('湖北', 30),

('辽宁', 20),

('陕西', 10)]

# 创建Map对象

map_chart = Map()

# 添加数据及配置项

map_chart.add('省份', province_data, 'china',

label_opts=opts.LabelOpts(is_show=False))

# 设置全局配置项

map_chart.set_global_opts(title_opts=opts.TitleOpts(title='Population Distribution'))

# 展示图表

map_chart.render_notebook()

在上述代码示例中,我们首先构造了一个省份数据列表,其中存储了每个省份的名称和人口数量。然后,创建了一个Map对象,并使用add方法添加数据及配置项。其中,第一个参数是图例的名称,第二个参数是数据列表,第三个参数是地图类型,此处使用了'china'表示中国地图。label_opts配置项用于设置是否展示标签。最后,使用set_global_opts方法设置全局配置项,并展示图表。

6.1 地图中的热力图

除了展示地理位置信息之外,地图还可以用来展示地理位置数据的热度,例如展示不同地区的房价分布情况。使用pyecharts生成地图热力图非常简单,如下面的代码示例所示:

from pyecharts import options as opts

from pyecharts.charts import MapGlobe

from pyecharts.globals import ThemeType

from pyecharts.commons.utils import JsCode

# 构造数据

data = [('New York', 100),

('San Francisco', 80),

('Los Angeles', 70),

('Chicago', 60),

('Seattle', 50),

('Boston', 40),

('Houston', 30),

('Miami', 20),

('Atlanta', 10),

]

# 创建MapGlobe对象

globe = MapGlobe()

# 添加数据及配置项

globe.add_schema()

globe.add(

'PM2.5',

data,

type_='scatter3D',

is_map_symbol_show=False,

label_opts=opts.LabelOpts(

is_show=True,

formatter=JsCode(

'''

function(params) {

return params.data.value[2];

}

'''

),

),

)

globe.set_global_opts(

visualmap_opts=opts.VisualMapOpts(

min_=10,

max_=100,

range_text=['High', 'Low'],

is_calculable=True,

range_color=['lightskyblue', 'yellow', 'orangered'],

),

title_opts=opts.TitleOpts(title='Global Air Quality'),

theme=ThemeType.DARK

)

# 展示图表

globe.render_notebook()

在该代码示例中,我们创建了一个MapGlobe对象,并使用add_schema方法添加地球的底图。然后,使用add方法添加数据及配置项。其中,第一个参数是图例的名称,第二个参数是数据列表,type_用于设置热力图类型。最后,使用set_global_opts方法设置全局配置项,包括设置图表的标题、地球背景等。需要注意的是,MapGlobe是用于创建地球热力图的,所以无需指定地图类型。

7. 总结

以上就是使用pyecharts生成多种图表的代码示例,包括折线图、柱状图、散点图和地图。总的来说,pyecharts是一款非常强大的数据可视化工具,支持多种图表类型,并且易于使用。无论是初学者还是专业人士都可以使用pyecharts快速生成美观的数据可视化图表。

后端开发标签