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快速生成美观的数据可视化图表。