Pyecharts 是一个基于 ECharts 图表库的 Python 类库,它允许用户在 Python 环境中使用 ECharts 创建丰富的交互式图表和数据可视化。ECharts 是百度开源的一个强大的可视化 JavaScript 库,专注于提供交互性和可定制性的数据图表。
1.简介
Pyecharts是由Echarts团队开发的,是便于在Python环境中便捷使用Echarts可视化库
-
支持多种图表类型:
- Pyecharts 提供了丰富的图表类型,包括但不限于折线图、柱状图、散点图、热力图等。这使得用户可以根据不同的数据特点选择合适的图表类型,满足各种数据可视化需求。
-
简单易用的 API:
- Pyecharts 的 API 被设计为简单易用,允许用户使用链式调用或函数式调用的方式来创建和配置图表。这样的设计使得用户可以快速上手,同时代码更具可读性。
-
支持多种数据格式:
- Pyecharts 提供了对多种数据格式的支持,包括 CSV、JSON、pandas 数据框等。这意味着用户可以方便地导入来自不同数据源的数据,无需进行繁琐的数据格式转换。
-
可定制化的主题和样式:
- Pyecharts 支持用户根据自己的需求定制图表的主题和样式。这使得用户可以根据项目的风格或个人偏好进行定制,创建出更加个性化的图表。
-
支持交互式操作:
- Pyecharts 提供了交互式操作的功能,使用户可以通过鼠标滚轮、拖拽等方式对图表进行缩放、平移等操作。这种交互性帮助用户更灵活地探索数据,进行数据分析和发现潜在的模式。
使用Pyecharts库前需要先进行下载
pip install pyecharts
2.pyecharts学习路线
3.常用图表绘制
1.绘制柱状图
from pyecharts import options as opts
from pyecharts.charts import Bar
# 构造数据
x_data = ["A", "B", "C", "D", "E"]
y_data = [10, 20, 15, 25, 30]
# 创建柱状图
bar_chart = (
Bar()
.add_xaxis(x_data)
.add_yaxis("柱状图", y_data)
.set_global_opts(title_opts=opts.TitleOpts(title="简单柱状图"))
)
# 渲染图表
bar_chart.render("bar_chart.html")
我们构造了用于柱状图的数据。x_data
是 x 轴的数据,y_data
是对应的柱状图的数据。
创建了柱状图的实例 bar_chart
。通过链式调用,我们使用 add_xaxis
设置 x 轴的数据,使用 add_yaxis
添加柱状图的数据,这里的第一个参数是系列的名称,第二个参数是 y 轴的数据。最后,使用 set_global_opts
设置全局配置,这里设置了图表的标题。
使用 render
方法将图表渲染为一个 HTML 文件,文件名为 "bar_chart.html"。这个文件可以通过浏览器打开,从而查看生成的柱状图。
2.绘制饼图
from pyecharts import options as opts
from pyecharts.charts import Pie
# 构造数据
data = [("A", 10), ("B", 20), ("C", 15), ("D", 25), ("E", 30)]
# 创建饼图
pie_chart = (
Pie()
.add("", data)
.set_global_opts(title_opts=opts.TitleOpts(title="简单饼图"))
)
# 渲染图表
pie_chart.render("pie_chart.html")
通过 add
方法添加饼图的数据,第一个参数是系列的名称,第二个参数是数据。然后使用 set_global_opts
设置全局配置,这里设置了图表的标题。
3.散点图
from pyecharts import options as opts
from pyecharts.charts import Scatter
# 构造数据
data = [(10, 20), (20, 30), (30, 40), (40, 50), (50, 60)]
# 创建散点图
scatter_chart = (
Scatter()
.add_xaxis([x for x, y in data])
.add_yaxis(
series_name="散点图", # 系列名称
y_axis=[y for x, y in data],
symbol_size=20, # 散点大小
label_opts=opts.LabelOpts(is_show=True), # 是否显示标签
)
.set_global_opts(
title_opts=opts.TitleOpts(title="简单散点图"),
xaxis_opts=opts.AxisOpts(type_="value", name="X轴"), # X轴配置
yaxis_opts=opts.AxisOpts(type_="value", name="Y轴"), # Y轴配置
)
)
# 渲染图表
scatter_chart.render("scatter_chart.html")
series_name
:指定系列的名称。symbol_size
:设置表示数据点的符号(标记)的大小。label_opts
:配置与数据标签相关的选项,例如是否显示标签 (is_show
)。xaxis_opts
和yaxis_opts
:配置 X 轴和 Y 轴的选项,例如轴类型和轴名称。
5.中国地图
from pyecharts import options as opts
from pyecharts.charts import Map
# 构造数据
data = [("北京", 100), ("上海", 200), ("广州", 150), ("深圳", 180), ("重庆", 120)]
# 创建地图
china_map = (
Map()
.add("城市", data, maptype="china")
.set_global_opts(title_opts=opts.TitleOpts(title="中国地图"))
)
# 渲染图表
china_map.render("china_map.html")
使用 Map
类时,调用了 ECharts 的地图功能,而 ECharts 内置了世界地图和中国地图等数据。因此,当你指定 maptype="china"
时,Pyecharts 会利用 ECharts 内置的中国地图数据进行绘制。
6.动态轨迹图
from pyecharts.commons.utils import JsCode
from pyecharts import options as opts
from pyecharts.charts import Geo, Timeline
# 构造时间序列数据
trajectory_data = [
{"time": "2022-01-01", "city": "北京"},
{"time": "2022-01-02", "city": "上海"},
{"time": "2022-01-03", "city": "广州"},
# 添加更多时间序列数据...
]
# 构造城市坐标
city_coordinates = {
"北京": [116.397, 39.907],
"上海": [121.473, 31.230],
"广州": [113.324, 23.102],
# 添加更多城市坐标...
}
# 创建 Geo 图表
trajectory_map = (
Geo(init_opts=opts.InitOpts(width="800px", height="600px"))
.add_schema(maptype="china")
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
.set_global_opts(
visualmap_opts=opts.VisualMapOpts(
max_=10, # 数据值的最大值
min_=0, # 数据值的最小值
range_color=["blue", "green"], # 渐变颜色
is_piecewise=True, # 是否为分段型
),
title_opts=opts.TitleOpts(title="动态轨迹图"),
)
)
# 创建时间轴
timeline = Timeline(init_opts=opts.InitOpts(width="800px", height="600px"))
# 更新动态轨迹数据
for data_point in trajectory_data:
city = data_point["city"]
coordinates = city_coordinates.get(city)
if coordinates:
map_data = [(city, 1)] # 每个时间点一个城市,数值设置为1
trajectory_map.add_coordinate(city, coordinates[0], coordinates[1])
trajectory_map.add("动态轨迹", map_data, type_="effectScatter", color="blue")
timeline.add(trajectory_map, time_point=data_point["time"])
# 渲染图表
timeline.render("trajectory_map.html")
导入模块和数据准备:
-
from pyecharts.commons.utils import JsCode
:导入 Pyecharts 中用于写 JavaScript 代码的JsCode
类。 -
from pyecharts import options as opts
:导入 Pyecharts 的options
模块并别名为opts
。 -
from pyecharts.charts import Geo, Timeline
:导入Geo
和Timeline
类。 -
trajectory_data
:一个包含字典的列表,表示时间和城市信息。每个字典有 'time' 和 'city' 键对应的值。 -
city_coordinates
:一个字典,将城市名映射到对应的经纬度坐标。
创建 Geo 图表:
Geo(init_opts=opts.InitOpts(width="800px", height="600px"))
:创建一个 Geo 图表,设置初始宽度和高度。.add_schema(maptype="china")
:添加地图类型的模式(在这里是中国地图)。.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
:配置系列选项,例如关闭标签以获得更好的可视化效果。.set_global_opts(...)
:配置图表的全局选项,包括视觉映射选项、标题选项等。
创建时间轴:
Timeline(init_opts=opts.InitOpts(width="800px", height="600px"))
:创建一个带有初始宽度和高度的时间轴。
更新动态轨迹数据:
- 遍历
trajectory_data
中的每个数据点。 - 获取城市名称和相应的坐标。
- 如果坐标可用,使用
add_coordinate
将城市坐标添加到 Geo 图表中。 - 使用
add
方法添加动态效果的散点图,表示每个城市,数值设置为1。
渲染图表:
- 将包含动态轨迹数据的时间轴渲染成一个名为 "trajectory_map.html" 的 HTML 文件。
以上仅限于部分例子,以及参数设置,不包括全部的pyecharts图表,更多的图表和参数可以参考官网网站文档进行查询