文章目录
- 专栏导读
- 一、Scatter(散点图)
- 1. add函数
- 2. 数据项
- 二、基础气泡图
- 三、多维度散点图
- 四、添加分割线
- 五、动态涟漪散点图
- 六、不同形状散点图
- 七、3D散点图
专栏导读
🔥🔥本文已收录于《100天精通Python从入门到就业》:本专栏专门针对零基础和需要进阶提升的同学所准备的一套完整教学,从0到100的不断进阶深入,后续还有实战项目,轻松应对面试,专栏订阅地址:https://blog.csdn.net/yuan2019035055/category_11466020.html
- 优点:订阅限时9.9付费专栏进入千人全栈VIP答疑群,作者优先解答机会(代码指导、远程服务),群里大佬众多可以抱团取暖(大厂内推机会)
- 专栏福利:简历指导、招聘内推、每周送实体书、80G全栈学习视频、300本IT电子书:Python、Java、前端、大数据、数据库、算法、爬虫、数据分析、机器学习、面试题库等等
一、Scatter(散点图)
1. add函数
在Pyecharts中,Scatter类的add函数有以下参数:
- name:str,数据系列的名称。
- xaxis_data:Sequence,x轴的数据。
- yaxis_data:Sequence,y轴的数据。
- symbol_size:Union[int, Sequence],散点的大小。如果为int类型,则所有散点的大小都相同;如果为Sequence类型,则可以为每个散点指定不同的大小。
- label_opts:LabelOpts,散点的标签配置项。
- tooltip_opts:TooltipOpts,散点的提示框配置项。
- itemstyle_opts:ItemStyleOpts,散点的图形样式配置项。
- encode:Dict,数据编码配置项。用于指定x轴和y轴的数据在数据源中的位置,例如:{“x”: 0, “y”: 1}。
其中,name、xaxis_data和yaxis_data参数是必需的,其他参数都是可选的。
示例代码:
scatter = Scatter()
scatter.add(
name="散点图",
xaxis_data=[1, 2, 3, 4, 5],
yaxis_data=[10, 20, 30, 40, 50],
symbol_size=10,
label_opts=opts.LabelOpts(formatter="{@[2]}"),
tooltip_opts=opts.TooltipOpts(formatter="{@[2]}"),
itemstyle_opts=opts.ItemStyleOpts(color="red"),
encode={"x": 0, "y": 1},
)
这个例子创建了一个Scatter对象,然后使用add函数添加了一个散点数据系列,指定了x轴和y轴的数据,散点的大小为10,标签格式化为第三个数据,提示框格式化为第三个数据,散点的颜色为红色,数据编码指定x轴数据在第0个位置,y轴数据在第1个位置。
2. 数据项
class ScatterItem(
name: Union[str, Numeric] = None, # 数据系列的名称,可以是字符串或数字
value: Union[str, Numeric] = None, # 散点的值,可以是字符串或数字
symbol: Optional[str] = None, # 散点的标记符号,可选参数,默认为None
symbol_size: Union[Sequence[Numeric], Numeric] = None, # 散点的大小,可以是数字或数字序列
symbol_rotate: Optional[Numeric] = None, # 散点的旋转角度,可选参数,默认为None
symbol_keep_aspect: bool = False, # 散点的宽高比是否保持一致,可选参数,默认为False
symbol_offset: Optional[Sequence] = None, # 散点的偏移量,可选参数,默认为None
label_opts: Union[LabelOpts, dict, None] = None, # 散点的标签配置项,可以是LabelOpts对象、字典或None
itemstyle_opts: Union[ItemStyleOpts, dict, None] = None, # 散点的图形样式配置项,可以是ItemStyleOpts对象、字典或None
tooltip_opts: Union[TooltipOpts, dict, None] = None, # 散点的提示框配置项,可以是TooltipOpts对象、字典或None
)
这个类是用于表示散点图中的每个散点数据项。参数的具体含义已在注释中进行了解释。
二、基础气泡图
要使用Pyecharts绘制普通气泡图,可以按照以下步骤进行链式写法的绘制:
- 导入所需模块:
from pyecharts import options as opts
from pyecharts.charts import Scatter
- 创建一个Scatter实例,并设置全局配置项:
scatter = Scatter().set_global_opts(
title_opts=opts.TitleOpts(title="普通气泡图")
)
- 添加数据系列:
scatter.add_xaxis(x_data) # 设置x轴数据
scatter.add_yaxis("", y_data) # 设置y轴数据
- 设置气泡的大小和颜色:
scatter.set_series_opts(
label_opts=opts.LabelOpts(is_show=False), # 不显示标签
itemstyle_opts=opts.ItemStyleOpts(color="rgba(255, 0, 0, 0.6)"), # 设置气泡颜色
symbol_size=20 # 设置气泡大小
)
- 渲染图表,并将结果保存为HTML文件:
# 渲染图表
scatter.render_notebook()
scatter.render("scatter.html")
完整代码示例:
from pyecharts import options as opts
from pyecharts.charts import Scatter
# 数据
x_data = [1, 2, 3, 4, 5]
y_data = [10, 20, 30, 40, 50]
# 创建Scatter实例
scatter = Scatter().set_global_opts(
title_opts=opts.TitleOpts(title="普通气泡图")
)
# 添加数据系列
scatter.add_xaxis(x_data)
scatter.add_yaxis("", y_data)
# 设置气泡的大小和颜色
scatter.set_series_opts(
label_opts=opts.LabelOpts(is_show=False),
itemstyle_opts=opts.ItemStyleOpts(color="rgba(255, 0, 0, 0.6)"),
symbol_size=20
)
# 渲染图表
scatter.render_notebook()
scatter.render("scatter.html")
运行完上述代码后,运行结果:
三、多维度散点图
# 导入需要的模块
from pyecharts.charts import Scatter
from pyecharts.faker import Faker
# 创建Scatter对象
scatter = (
Scatter()
# 添加x轴数据
.add_xaxis(Faker.choose())
# 添加y轴数据,系列名称为"商家A"
.add_yaxis("商家A", Faker.values())
# 添加y轴数据,系列名称为"商家B"
.add_yaxis("商家B", Faker.values())
# 设置全局配置项
.set_global_opts(
# 设置标题
title_opts=opts.TitleOpts(title="多维度散点图"),
# 设置视觉映射配置项,类型为"size",最大值为150,最小值为20
visualmap_opts=opts.VisualMapOpts(type_="size", max_=150, min_=20),
)
)
# 在Jupyter Notebook中渲染图表
scatter.render_notebook()
运行结果:
四、添加分割线
通过散点图与分割线相互结合:
import numpy as np
from pyecharts import options as opts
from pyecharts.charts import Scatter
# 生成随机数据
np.random.seed(0)
data = np.random.randn(100, 4)
# 使用链式写法绘制散点图
scatter = (
Scatter()
.add_xaxis(list(range(100)))
.add_yaxis("A", data[:, 0].tolist())
.add_yaxis("B", data[:, 1].tolist())
.add_yaxis("C", data[:, 2].tolist())
.add_yaxis("D", data[:, 3].tolist())
.set_global_opts(
title_opts=opts.TitleOpts(title="多维度散点图"),
xaxis_opts=opts.AxisOpts(name="Index"),
yaxis_opts=opts.AxisOpts(name="Value"),
)
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
)
# 添加分割线
line = (
Scatter()
.add_xaxis(list(range(100)))
.add_yaxis("Line", [0] * 100, label_opts=opts.LabelOpts(is_show=False))
.set_series_opts(
symbol_size=0,
linestyle_opts=opts.LineStyleOpts(type_="dashed", color="red"),
label_opts=opts.LabelOpts(is_show=False),
)
)
scatter.render_notebook()
运行结果:
五、动态涟漪散点图
# 导入所需的类和函数
from pyecharts import options as opts
from pyecharts.charts import EffectScatter
from pyecharts.faker import Faker
# 创建 EffectScatter 对象,并设置 x 轴数据和 y 轴数据
c = (
EffectScatter()
.add_xaxis(Faker.choose()) # 添加 x 轴数据,这里使用了 Faker.choose() 生成随机数据
.add_yaxis("", Faker.values()) # 添加 y 轴数据,这里使用了 Faker.values() 生成随机数据
.set_global_opts(title_opts=opts.TitleOpts(title="动态涟漪散点图")) # 设置全局配置,标题为"动态涟漪散点图"
)
# 在 Jupyter Notebook 中展示
c.render_notebook()
运行结果:
六、不同形状散点图
在下面的代码中,首先创建了一个Scatter对象,然后通过set_global_opts()方法设置了图表的标题和大小,以及图表的颜色映射范围。接下来,通过add_xaxis()方法设置x轴的数据,通过add_yaxis()方法分别添加了四个系列的散点图数据,并设置了不同的形状和大小。
from pyecharts import options as opts
from pyecharts.charts import Scatter
# 创建散点图对象
scatter = Scatter()
# 设置图表标题和大小
scatter.set_global_opts(
title_opts=opts.TitleOpts(title="不同形状散点图"),
visualmap_opts=opts.VisualMapOpts(type_="size", max_=50, min_=20),
legend_opts=opts.LegendOpts(pos_right="10%", pos_bottom="15%"),
)
# 添加散点图数据并设置样式
scatter.add_xaxis(['A', 'B', 'C', 'D', 'E'])
scatter.add_yaxis("圆形", [10, 20, 30, 40, 50], symbol_size=10)
scatter.add_yaxis("矩形", [20, 30, 40, 50, 60], symbol='rect', symbol_size=15)
scatter.add_yaxis("三角形", [30, 40, 50, 60, 70], symbol='triangle', symbol_size=20)
scatter.add_yaxis("星形", [40, 50, 60, 70, 80], symbol='star', symbol_size=25)
# 在 Jupyter Notebook 中展示
scatter.render_notebook()
运行结果:
在scatter.add_yaxis()函数中,symbol参数用于设置散点图的形状。下面是symbol参数的全部参数说明:
- ‘circle’:圆形
- ‘rect’:矩形
- ‘roundRect’:圆角矩形
- ‘triangle’:三角形
- ‘diamond’:菱形
- ‘pin’:水滴形
- ‘arrow’:箭头形
- ‘none’:无形状,即不显示形状,只显示散点
另外,symbol参数还可以是一个自定义的路径字符串,表示使用自定义的形状图片,例如’svg://path/to/custom_symbol.svg’。
在使用scatter.add_yaxis()函数时,可以根据需要选择合适的形状参数来设置散点图的形状。
七、3D散点图
- 导入所需的类和函数,在代码中导入所需的类和函数,包括
Scatter3D
类和configure
函数。示例代码如下:
from pyecharts.charts import Scatter3D
from pyecharts import options as opts
from pyecharts.render import notebook
import random
- 创建3D散点图,使用
Scatter3D
类创建3D散点图,设置散点的属性,如位置、大小、颜色等。示例代码如下:
scatter_data = [[random.randint(0, 100), random.randint(0, 100), random.randint(0, 100)] for _ in range(80)]
scatter3d = (
Scatter3D()
.add("", scatter_data)
.set_global_opts(
title_opts=opts.TitleOpts(title="3D散点图"),
visualmap_opts=opts.VisualMapOpts(max_=10),
)
)
在上述代码中,scatter_data
是一个包含多个散点坐标的列表,每个散点坐标由三个值表示(x、y、z)。
- 输出到Jupyter Notebook,使用
notebook.render_notebook
函数将图表输出到Jupyter Notebook中。示例代码如下:
notebook.render_notebook(scatter3d)
- 完整代码:
from pyecharts.charts import Scatter3D
from pyecharts import options as opts
import random
scatter_data = [[random.randint(0, 100), random.randint(0, 100), random.randint(0, 100)] for _ in range(80)]
scatter3d = (
Scatter3D()
.add("", scatter_data)
.set_global_opts(
title_opts=opts.TitleOpts(title="3D散点图"),
visualmap_opts=opts.VisualMapOpts(max_=10),
)
)
scatter3d.render_notebook()
通过以上步骤,就可以使用Pyecharts的链式写法绘制3D散点图并将结果输出到Jupyter Notebook中。图表将直接在Notebook中渲染和显示,无需额外的保存和导出操作。
运行结果: