Pyecharts 是一个基于 Python 的优秀数据可视化库,能够生成精美的交互式图表。在众多图表类型中,极坐标系(Polar Coordinate)图表是一种独特且美观的可视化方式。通过极坐标系,数据能够以不同的角度和半径维度展示,非常适合用于环形图、玫瑰图等特殊应用场景。本文将介绍如何使用 Pyecharts 绘制多种炫酷的极坐标系图表,并详细说明其核心参数。
一、极坐标系简介
极坐标系是一种使用极角和极径(半径)来确定点的图表类型。在极坐标中,数据点的位置由角度和半径决定,而不是常规的笛卡尔坐标系中的 (x, y) 轴。极坐标系有多种常见应用,如:
- 玫瑰图(Rose Chart):显示数据项在不同类别下的大小,用扇形角度或半径来表示。
- 雷达图(Radar Chart):用于展示多个指标的数据分布情况。
- 环形图(Annular Chart):用于展示数据环形分布。
核心参数
- radiusAxis: 半径轴,控制极径的范围和样式。
- angleAxis: 角度轴,控制极角的划分和角度范围。
- polar: 定义极坐标系的整体布局。
- 数据项: 支持
scatter
、line
、bar
等基本图形组件。
二、环境准备
在开始绘制之前,首先需要安装 Pyecharts 库:
pip install pyecharts
导入必要的模块:
from pyecharts.charts import Polar
from pyecharts import options as opts
三、Pyecharts 极坐标系实战
1. 玫瑰图(Rose Chart)
玫瑰图是一种典型的极坐标系应用。可以通过设置 radius
或 angle
来控制各扇形区域的大小。
from pyecharts.charts import Polar
from pyecharts import options as opts
# 数据准备
data = [(i, (i % 10) * 10 + 10) for i in range(1, 21)]
# 绘制玫瑰图
polar = (
Polar()
.add(
series_name="玫瑰图示例",
data=data,
type_="bar",
label_opts=opts.LabelOpts(is_show=False),
radius_axis_index=0,
)
.set_global_opts(
title_opts=opts.TitleOpts(title="极坐标玫瑰图"),
angleaxis_opts=opts.AngleAxisOpts(is_clockwise=False, start_angle=90),
radiusaxis_opts=opts.RadiusAxisOpts(max_=100),
polar_opts=opts.PolarOpts(),
)
)
polar.render_notebook()
参数说明:
type_="bar"
:表示用柱形图(bar)绘制扇形区域。angleaxis_opts
:控制角度轴的方向和起始角度。radiusaxis_opts
:控制半径的最大值。is_clockwise
:设置角度轴是否顺时针显示。
2. 雷达图(Radar Chart)
雷达图也可以在极坐标系中使用,它是多维度数据可视化的理想工具。
from pyecharts.charts import Radar
from pyecharts import options as opts
# 定义雷达图的维度
radar = Radar()
schema = [
opts.RadarIndicatorItem(name="销售", max_=100),
opts.RadarIndicatorItem(name="管理", max_=100),
opts.RadarIndicatorItem(name="信息技术", max_=100),
opts.RadarIndicatorItem(name="客服", max_=100),
opts.RadarIndicatorItem(name="研发", max_=100),
opts.RadarIndicatorItem(name="市场", max_=100),
]
# 添加数据和雷达图的配置
radar.add_schema(schema=schema)
radar.add(
series_name="预算分配",
data=[[80, 90, 70, 85, 95, 88]],
linestyle_opts=opts.LineStyleOpts(width=2),
)
radar.set_global_opts(title_opts=opts.TitleOpts(title="雷达图示例"))
radar.render_notebook()
参数说明:
add_schema
:定义雷达图各个维度的属性(名称和最大值)。linestyle_opts
:设置线条的样式,包括宽度、颜色等。
3. 环形图(Annular Chart)
环形图是一种展示数据在圆形上的分布情况,尤其适用于数据周期性或重复性的展示。
from pyecharts.charts import Polar
from pyecharts import options as opts
# 数据准备
data = [(i, (i % 4) * 10 + 10) for i in range(1, 21)]
# 绘制环形图
polar = (
Polar()
.add(
series_name="环形图示例",
data=data,
type_="line",
label_opts=opts.LabelOpts(is_show=False),
radiusaxis_opts=opts.RadiusAxisOpts(is_clockwise=False),
)
.set_global_opts(
title_opts=opts.TitleOpts(title="极坐标环形图"),
angleaxis_opts=opts.AngleAxisOpts(is_clockwise=True, start_angle=0),
radiusaxis_opts=opts.RadiusAxisOpts(max_=40),
polar_opts=opts.PolarOpts(),
)
)
polar.render_notebook()
参数说明:
type_="line"
:使用线条代替柱形图,绘制环形图。angleaxis_opts
:角度轴配置,控制扇形的角度分布。radiusaxis_opts
:设置半径轴的最大值。
4. 极坐标散点图(Scatter Plot)
除了玫瑰图和雷达图,极坐标系也可以用于绘制散点图,将数据以点的形式分布在极坐标上。
from pyecharts.charts import Polar
from pyecharts import options as opts
import random
# 数据准备
data = [(random.randint(0, 360), random.randint(0, 100)) for _ in range(100)]
# 绘制散点图
polar = (
Polar()
.add(
series_name="极坐标散点图",
data=data,
type_="scatter",
effect_opts=opts.EffectOpts(scale=5),
)
.set_global_opts(
title_opts=opts.TitleOpts(title="极坐标散点图"),
angleaxis_opts=opts.AngleAxisOpts(),
radiusaxis_opts=opts.RadiusAxisOpts(),
polar_opts=opts.PolarOpts(),
)
)
polar.render_notebook()
参数说明:
type_="scatter"
:指定使用散点图形式。effect_opts
:设置动画效果,scale
控制点的大小。
四、更多高级极坐标系设置
Pyecharts 提供了丰富的自定义配置,以下是一些常见的高级选项:
- 坐标轴样式:可以通过
axisline_opts
、axistick_opts
等参数自定义轴线、刻度线的样式。 - 动画效果:通过
effect_opts
可以为散点图或其他图形添加动态效果,比如scale
、period
等。 - 颜色渐变:可通过
color
参数自定义每个数据点或区域的颜色,甚至使用渐变色。
例如,为玫瑰图添加动态效果和颜色渐变:
polar = (
Polar()
.add(
series_name="炫酷玫瑰图",
data=data,
type_="bar",
label_opts=opts.LabelOpts(is_show=False),
color="rgb(255,99,71)", # 设置颜色
radiusaxis_opts=opts.RadiusAxisOpts(max_=100),
)
.set_global_opts(
title_opts=opts.TitleOpts(title="炫酷极坐标玫瑰图"),
angleaxis_opts=opts.AngleAxisOpts(is_clockwise=True, start_angle=90),
polar_opts=opts.PolarOpts(),
)
.set_series_opts(
effect_opts=opts.EffectOpts(scale=3, period=3)
)
)
polar.render_notebook()
五、总结
通过 Pyecharts,极坐标系图表可以用来直观地展现数据的周期性、分布情况和多维特征。本文介绍了四种常见的极坐标系应用:玫瑰图、雷达图、环形图和散点图,并详细解释了核心参数和代码实现。在实际应用中,可以根据
扫描二维码关注公众号,回复:
17410800 查看本文章
