Pyecharts 散点图

Pyecharts 散点图语法

在 Pyecharts 中,我们可以使用 Scatter 这个模块来绘制一个散点图。散点图的主要作用是:判断两个变量之间是否存在关联趋势。

语法:

scatter = Scatter()
scatter.add_xaxis(xaxis_data).
scatter.add_yaxis(series_name, y_axis)

说明:

散点图和折线图的语法是一样的,首先使用 Scatter() 创建一个散点图对象 scatter,然后调用该对象下面的 add_xaxis() 方法来添加 x 轴数据,以及调用 add_yaxis() 方法来添加 y 轴数据。

示例 1:一组散点

import pandas as pd
from pyecharts.charts import Scatter

# 数据
data = [
    ['1月', 450],
    ['2月', 420],
    ['3月', 560],
    ['4月', 480],
    ['5月', 530],
    ['6月', 620]
]
df = pd.DataFrame(data, columns=['月份', '上衣'])

# 绘图
scatter = Scatter()
scatter.add_xaxis(xaxis_data=list(df['月份']))
scatter.add_yaxis(series_name='上衣', y_axis=list(df['上衣']))

# 渲染
scatter.render()

运行生成的 render.html,浏览器效果如下图所示。

pyecharts散点图只有一组散点

分析:

在 Pyecharts 中,折线图、柱状图、散点图这 3 种图表的基本语法是非常相似的。小伙伴们可以多多对比一下,这样更能加深理解和记忆。

示例 2:多组散点

import pandas as pd
from pyecharts.charts import Scatter

# 数据
data = [
    ['1月', 450, 110],
    ['2月', 420, 220],
    ['3月', 560, 150],
    ['4月', 480, 310],
    ['5月', 530, 250],
    ['6月', 620, 160]
]
df = pd.DataFrame(data, columns=['月份', '上衣', '裤子'])

# 绘图
scatter = Scatter()
scatter.add_xaxis(xaxis_data=list(df['月份']))
# 第1组散点
scatter.add_yaxis(series_name='上衣', y_axis=list(df['上衣']))
# 第2组散点
scatter.add_yaxis(series_name='裤子', y_axis=list(df['裤子']))

# 渲染
scatter.render()

运行生成的 render.html,浏览器效果如下图所示。

pyecharts散点图包含多组散点

分析:

对于散点图来说,有多少组散点,就调用多少次 add_yaxis() 方法。

Pyecharts 散点图样式

在 Pyecharts 中,对于散点图的自定义样式,主要包括 2 个方面:①散点样式;②添加区分。

1. 散点样式

在 Pyecharts 中,我们可以使用 add_yaxis() 方法的 symbol 参数来定义散点的形状,也可以使用 symbol_size 参数来定义散点的大小。

语法:

obj.add_yaxis(
    ……
    symbol,
    symbol_size
)

说明:

参数 symbol 用于定义散点的形状,常用取值如下表所示。

参数 symbol 的取值
取值 说明
circle(默认值) 圆形
rect 矩形
triangle 三角形
diamond 钻石状
arrow 箭头状

参数 symbol_size 用于定义散点的大小,默认值为 10(即 10 像素)。

示例 3:自定义散点样式

import pandas as pd
from pyecharts.charts import Scatter

# 数据
data = [
    ['1月', 450],
    ['2月', 420],
    ['3月', 560],
    ['4月', 480],
    ['5月', 530],
    ['6月', 620]
]
df = pd.DataFrame(data, columns=['月份', '上衣'])

# 绘图
scatter = Scatter()
scatter.add_xaxis(xaxis_data=list(df['月份']))
scatter.add_yaxis(
    series_name='上衣', 
    y_axis=list(df['上衣']),
    symbol='diamond',
    symbol_size=20
)

# 渲染
scatter.render()

运行生成的 render.html,浏览器效果如下图所示。

pyecharts散点图symbol='diamond'

分析:

symbol='diamond' 表示定义散点的形状为 “钻石状”,symbol_size=20 表示将散点的大小定义为 20 像素。如果我们将 symbol='diamond' 改为 symbol='arrow',此时效果如下图所示。

pyecharts散点图symbol='arrow'

如果想要改变散点的颜色,此时应该怎么做呢?小伙伴们别忘了上一节介绍的 set_colors() 方法和 color 参数。对于这个例子来说,下面 2 种方式都是可行的,再次运行后的效果如下图所示。

# 方式1
scatter.add_yaxis(
    series_name='上衣', 
    y_axis=list(df['上衣']),
    symbol='diamond',
    symbol_size=20
)
scatter.set_colors(['#009999'])

# 方式2
scatter.add_yaxis(
    series_name='上衣', 
    y_axis=list(df['上衣']),
    symbol='diamond',
    symbol_size=20,
    color='#009999'
)

pyecharts散点图的散点颜色

2. 添加区分

在 Pyecharts 中,我们可以使用 set_global_opts() 方法结合 visualmap_opts 参数来为散点图添加区分,包括颜色区分、大小区分等。

示例 4:颜色区分

import pandas as pd
from pyecharts.charts import Scatter
import pyecharts.options as opts

# 数据
data = [
    ['1月', 450],
    ['2月', 420],
    ['3月', 560],
    ['4月', 480],
    ['5月', 530],
    ['6月', 620]
]
df = pd.DataFrame(data, columns=['月份', '上衣'])

# 绘图
scatter = Scatter()
scatter.add_xaxis(xaxis_data=list(df['月份']))
scatter.add_yaxis(
    series_name='上衣', 
    y_axis=list(df['上衣']),
    symbol_size=20
)
# 添加颜色区分
scatter.set_global_opts(visualmap_opts=opts.VisualMapOpts(
    type_='color',
    min_=420,
    max_=620,
    pos_bottom=50,
    pos_right=0
))

# 渲染
scatter.render()

运行生成的 render.html,浏览器效果如下图所示。

pyecharts散点图添加颜色区分

分析:

scatter.set_global_opts(visualmap_opts=opts.VisualMapOpts(
    type_='color',
    min_=420,
    max_=620,
    pos_bottom=50,
    pos_right=0
))

type_='color' 表示使用颜色来进行区分。由于这一组数据的最小值是 420,最大值是 620,所以这里我们设置 min_=420 和 max_=620。min_=420 和 max_=620 表示颜色条取值范围是从 420 开始,然后到 620 结束。

当然了,我们也可以设置颜色条是从 0 开始的,只需要设置 min_=0 就可以了,此时效果如下图所示。从结果看出来,此时散点的区分度并不高,所以我们并不推荐设置 min_=0。

pyecharts散点图min_=0

最后,pos_bottom 和 pos_right 这 2 个参数是用于定义颜色条的位置,这里我们将其放在右下角的位置。

示例 5:自定义颜色

import pandas as pd
from pyecharts.charts import Scatter
import pyecharts.options as opts

# 数据
data = [
    ['1月', 450],
    ['2月', 420],
    ['3月', 560],
    ['4月', 480],
    ['5月', 530],
    ['6月', 620]
]
df = pd.DataFrame(data, columns=['月份', '上衣'])

# 绘图
scatter = Scatter()
scatter.add_xaxis(xaxis_data=list(df['月份']))
scatter.add_yaxis(
    series_name='上衣', 
    y_axis=list(df['上衣']),
    symbol_size=20
)
# 添加颜色区分
scatter.set_global_opts(visualmap_opts=opts.VisualMapOpts(
    type_='color',
    min_=420,
    max_=620,
    pos_bottom=50,
    pos_right=0,
    range_color=['lightskyblue', 'yellow', 'orangered']
))

# 渲染
scatter.render()

运行生成的 render.html,浏览器效果如下图所示。

pyecharts散点图自定义颜色

分析:

如果你觉得颜色条默认的颜色不好看,我们还可以使用 range_color 这个参数来自定义颜色。range_color 参数的取值是一个列表,range_color=['lightskyblue', 'yellow', 'orangered'] 表示颜色条是从 “lightskyblue” 过渡到 “yellow”,然后再从 “yellow” 过渡到 “orangered”。

示例 6:添加大小区分

import pandas as pd
from pyecharts.charts import Scatter
import pyecharts.options as opts

# 数据
data = [
    ['1月', 450],
    ['2月', 420],
    ['3月', 560],
    ['4月', 480],
    ['5月', 530],
    ['6月', 620]
]
df = pd.DataFrame(data, columns=['月份', '上衣'])

# 绘图
scatter = Scatter()
scatter.add_xaxis(xaxis_data=list(df['月份']))
scatter.add_yaxis(
    series_name='上衣', 
    y_axis=list(df['上衣']),
    symbol_size=20
)
# 添加大小区分
scatter.set_global_opts(visualmap_opts=opts.VisualMapOpts(
    type_='size',
    min_=420,
    max_=620,
    pos_bottom=50,
    pos_right=0
))

# 渲染
scatter.render()

运行生成的 render.html,浏览器效果如下图所示。

pyecharts散点图添加大小区分

分析:

scatter.set_global_opts(visualmap_opts=opts.VisualMapOpts(
    type_='size',
    min_=420,
    max_=620,
    pos_bottom=50,
    pos_right=0
))

如果想要为散点添加大小区分,我们只需要将 type_='color' 改为 type_='size' 就可以了,非常的简单。

上一篇: Pyecharts 柱状图

下一篇: Pyecharts 饼状图

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号