100天精通Python(可视化篇)——第95天:Pyecharts绘制多种炫酷气泡图参数说明+代码实战

文章目录

  • 专栏导读
  • 1. 什么是气泡图?
  • 2. 散点图与气泡图的区别
  • 3. 基础气泡图
  • 4. 气泡按颜色显示
  • 5. 气泡大小根据值大小显示
  • 6. 自定义气泡图颜色
  • 7. 设置Y轴百分比
  • 8. 添加涟漪效果
  • 9. 修改气泡形状
  • 书籍推荐

专栏导读

🔥🔥本文已收录于《100天精通Python从入门到就业》:本专栏专门针对零基础和需要进阶提升的同学所准备的一套完整教学,从0到100的不断进阶深入,后续还有实战项目,轻松应对面试,专栏订阅地址:https://blog.csdn.net/yuan2019035055/category_11466020.html

  • 优点订阅限时9.9付费专栏进入千人全栈VIP答疑群,作者优先解答机会(代码指导、远程服务),群里大佬众多可以抱团取暖(大厂内推机会)
  • 专栏福利简历指导、招聘内推、每周送实体书、80G全栈学习视频、300本IT电子书:Python、Java、前端、大数据、数据库、算法、爬虫、数据分析、机器学习、面试题库等等

1. 什么是气泡图?

气泡图是一种数据可视化图表,通过在二维坐标系上绘制气泡来展示数据。每个气泡的位置由其在坐标系上的横纵坐标确定,而气泡的大小通常表示第三个维度的数值。

气泡图常用于展示多个数据点之间的关系和趋势。横纵坐标表示两个变量,而气泡的大小表示第三个变量的数值大小。通过观察气泡的位置和大小,可以分析出数据之间的相关性和趋势。

气泡图通常用于展示大量数据,每个气泡代表一个数据点,可以通过不同的颜色或标记来表示不同的类别。同时,在气泡图中还可以添加其他信息,如数据标签、图例等,以增加图表的可读性和信息量。

气泡图适用于各种领域的数据分析,如经济学、市场研究、生物学等。它可以帮助研究人员和决策者更直观地理解数据,发现数据中的规律和趋势,从而做出更准确的决策。

2. 散点图与气泡图的区别

散点图和气泡图都是用于展示离散数据的图表类型,它们的相同点和不同点如下所示:

相同点:

  1. 都用于展示离散数据的分布情况。
  2. 都可以在图表中显示不同系列的数据。
  3. 都可以通过调整符号大小来表示数据的重要程度或权重。

不同点:

  1. 散点图的符号大小一般是固定的,而气泡图的符号大小可以根据数据的某个指标来动态调整,表现出更多维度的信息。
  2. 散点图的符号形一般是固定的,而气泡图的符号形状可以自定义,可以使用不同的形状来表示不同的系列或数据特征。
  3. 散点图主要关注数据点的位置分布,而气泡图除了位置分布,还可以通过符号大小和颜色等来展示更多的数据信息。

总的来说,散点图更简单直观,适用于展示数据点的位置分布情况;而气泡图则更加丰富多样,可以通过符号大小和颜色等来展示更多数据信息,适用于需要展示多维度数据的情况。选择使用哪种图表类型,应根据数据特点和需求来决定。

3. 基础气泡图

1、导入所需的库和模块:在Notebook中的代码单元格中导入所需的库和模块。示例代码如下:

from pyecharts.charts import Scatter
from pyecharts import options as opts
from pyecharts.globals import ThemeType
import random

2、生成数据

# 日期
x_values = [str(i) + '日' for i in range(1, 32)]
# print(x_values)
# 销量
y_values = [random.randint(1000, 10000) for _ in range(31)]
# print(y_values)

3、创建Scatter对象并设置图表的基本属性:使用链式写法创建Scatter对象,并设置图表的基本属性,例如标题、主题等。示例代码如下:

c = (
    Scatter() # 创建Scatter实例
    .set_global_opts(
        title_opts=opts.TitleOpts(title="普通气泡图"),  # 设置标题
        xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)), # 设置x轴分割线
        yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)),  # 设置y轴分割线
    )
   
)

4、添加数据和配置项:使用链式写法添加数据和配置项,例如气泡的大小、颜色等。示例代码如下:

.add_xaxis(x_values) # 设置x轴数据
.add_yaxis('商家A' ,y_values, symbol_size=30) # 设置y轴数据和点的大小

5、渲染图表:使用render_notebook()方法将图表渲染到Jupyter Notebook中。示例代码如下:

c.render_notebook()

完整示例代码如下:

from pyecharts.charts import Scatter
from pyecharts import options as opts
from pyecharts.globals import ThemeType
import random

# 日期
x_values = [str(i) + '日' for i in range(1, 32)]
# print(x_values)
# 销量
y_values = [random.randint(1000, 10000) for _ in range(31)]
# print(y_values)

c = (
    Scatter() # 创建Scatter实例
    .add_xaxis(x_values) # 设置x轴数据
    .add_yaxis('商家A' ,y_values, symbol_size=30) # 设置y轴数据和点的大小
    .set_global_opts(
        title_opts=opts.TitleOpts(title="普通气泡图"),  # 设置标题
        xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)), # 设置x轴分割线
        yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)),  # 设置y轴分割线
    )
   
)
c.render_notebook()

4. 气泡按颜色显示

通过添加visualmap_opts=opts.VisualMapOpts(max_=5000)参数设置,max_的值大小根据数据最大值调整

from pyecharts.charts import Scatter
from pyecharts import options as opts
from pyecharts.globals import ThemeType
import random

# 日期
x_values = [str(i) + '日' for i in range(1, 32)]
# print(x_values)
# 销量
y_values = [random.randint(1000, 10000) for _ in range(31)]
# print(y_values)

c = (
    Scatter() # 创建Scatter实例
    .add_xaxis(x_values) # 设置x轴数据
    .add_yaxis('商家A' ,y_values, symbol_size=30) # 设置y轴数据和点的大小
    .set_global_opts(
        title_opts=opts.TitleOpts(title="普通气泡图"),  # 设置标题
        xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)), # 设置x轴分割线
        yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)),  # 设置y轴分割线
        visualmap_opts=opts.VisualMapOpts(max_=1000), # 气泡按颜色显示
    )
   
)
c.render_notebook()

运行结果,拖动一旁的颜色显示对应的气泡图:

5. 气泡大小根据值大小显示

只需在visualmap_opts=opts.VisualMapOpts()中添加一个type_="size"的参数:

from pyecharts.charts import Scatter
from pyecharts import options as opts
from pyecharts.globals import ThemeType
import random

# 日期
x_values = [str(i) + '日' for i in range(1, 32)]
# print(x_values)
# 销量
y_values = [random.randint(1000, 10000) for _ in range(31)]
# print(y_values)

c = (
    Scatter() # 创建Scatter实例
    .add_xaxis(x_values) # 设置x轴数据
    .add_yaxis('商家A' ,y_values, symbol_size=30) # 设置y轴数据和点的大小
    .set_global_opts(
        title_opts=opts.TitleOpts(title="普通气泡图"),  # 设置标题
        xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)), # 设置x轴分割线
        yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)),  # 设置y轴分割线
        visualmap_opts=opts.VisualMapOpts(type_="size", max_=10000), # 气泡大小根据值大小,气泡按颜色显示
   
    )
   
)
c.render_notebook()

运行结果:

图片正如我们想象的那样气泡大小根据值大小显示,但是颜色却没有?如果我们两个都想要呢?

(1)将气泡按颜色显示和气泡大小根据值大小type_参数分别设置:

visualmap_opts=[
            opts.VisualMapOpts(type_="color", max_=10000), # 气泡按颜色显示
            opts.VisualMapOpts(type_="size", max_=10000) # 气泡大小根据值大小
]

(2)完整代码:

from pyecharts.charts import Scatter
from pyecharts import options as opts
from pyecharts.globals import ThemeType
import random

# 日期
x_values = [str(i) + '日' for i in range(1, 32)]
# print(x_values)
# 销量
y_values = [random.randint(1000, 10000) for _ in range(31)]
# print(y_values)

c = (
    Scatter()  # 创建Scatter实例
    .add_xaxis(x_values)  # 设置x轴数据
    .add_yaxis('商家A', y_values, symbol_size=30)  # 设置y轴数据和点的大小
    .set_global_opts(
        title_opts=opts.TitleOpts(title="普通气泡图"),  # 设置标题
        xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)),  # 设置x轴分割线
        yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)),  # 设置y轴分割线
        visualmap_opts=[
            opts.VisualMapOpts(type_="color", max_=10000), # 气泡按颜色显示
            opts.VisualMapOpts(type_="size", max_=10000) # 气泡大小根据值大小
        ]
    )

)
c.render_notebook()

运行结果,但是两个工具框重叠在一起了:

(3)通过分别在opts.VisualMapOpts()中设置上下pos_top="20"pos_bottom="20"参数设置工具库位置:

from pyecharts.charts import Scatter
from pyecharts import options as opts
from pyecharts.globals import ThemeType
import random

# 日期
x_values = [str(i) + '日' for i in range(1, 32)]
# print(x_values)
# 销量
y_values = [random.randint(1000, 10000) for _ in range(31)]
# print(y_values)

c = (
    Scatter()  # 创建Scatter实例
    .add_xaxis(x_values)  # 设置x轴数据
    .add_yaxis('商家A', y_values, symbol_size=30)  # 设置y轴数据和点的大小
    .set_global_opts(
        title_opts=opts.TitleOpts(title="普通气泡图"),  # 设置标题
        xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)),  # 设置x轴分割线
        yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)),  # 设置y轴分割线
        visualmap_opts=[
            opts.VisualMapOpts(type_="color", max_=10000, pos_top="20"), # 气泡按颜色显示
            opts.VisualMapOpts(type_="size", max_=10000, pos_bottom="20") # 气泡大小根据值大小
        ]
    )

)
c.render_notebook()

运行结果:

6. 自定义气泡图颜色

通过在visualmap_opts=opts.VisualMapOpts()函数中添加range_color=[]参数添加自定义颜色:

from pyecharts.charts import Scatter
from pyecharts import options as opts
from pyecharts.globals import ThemeType
import random

# 日期
x_values = [str(i) + '日' for i in range(1, 32)]
# print(x_values)
# 销量
y_values = [random.randint(1000, 10000) for _ in range(31)]
# print(y_values)

c = (
    Scatter()  # 创建Scatter实例
    .add_xaxis(x_values)  # 设置x轴数据
    .add_yaxis('商家A', y_values, symbol_size=30)  # 设置y轴数据和点的大小
    .set_global_opts(
        title_opts=opts.TitleOpts(title="普通气泡图"),  # 设置标题
        xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)),  # 设置x轴分割线
        yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)),  # 设置y轴分割线
        visualmap_opts=[
            opts.VisualMapOpts(type_="color", max_=10000, pos_top="20", range_color=["#00FF00","#FF0000"]), # 气泡按颜色显示,并设置自定义颜色
            opts.VisualMapOpts(type_="size", max_=10000, pos_bottom="20") # 气泡大小根据值大小
        ]
    )

)
c.render_notebook()

运行结果:

range_color参数可以接受一个颜色列表,用于指定颜色范围。你可以根据需要自定义颜色,例如:

  • 十六进制颜色码:["#FF0000", "#00FF00", "#0000FF"]
  • RGB颜色值:["rgb(255, 0, 0)", "rgb(0, 255, 0)", "rgb(0, 0, 255)"]
  • 预定义颜色名称:["red", "green", "blue"]

你可以根据自己的需求选择适合的颜色来设置range_color参数。

7. 设置Y轴百分比

yaxis_opts中,我们设置了Y轴的类型为”value”(数值轴),并使用axislabel_opts设置了标签的格式化函数,将数值转换为百分比显示。

from pyecharts.charts import Scatter
from pyecharts import options as opts
from pyecharts.globals import ThemeType
import random

# 日期
x_values = [str(i) + '日' for i in range(1, 32)]
# print(x_values)
# 销量
y_values = [random.randint(1000, 10000) for _ in range(31)]
# print(y_values)

c = (
    Scatter()  # 创建Scatter实例
    .add_xaxis(x_values)  # 设置x轴数据
    .add_yaxis('商家A', y_values, symbol_size=30)  # 设置y轴数据和点的大小
    .set_global_opts(
        title_opts=opts.TitleOpts(title="普通气泡图"),  # 设置标题
        xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)),  # 设置x轴分割线
        yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True), axislabel_opts=opts.LabelOpts(formatter="{value}%")),  # 设置y轴分割线
        visualmap_opts=[
            opts.VisualMapOpts(type_="color", max_=10000, pos_top="20", range_color=["#00FF00","#FF0000"]), # 气泡按颜色显示,并设置自定义颜色
            opts.VisualMapOpts(type_="size", max_=10000, pos_bottom="20") # 气泡大小根据值大小
        ]
    )

)
c.render_notebook()

运行结果:

8. 添加涟漪效果

1.、导包将from pyecharts.charts import Scatter换成:

from pyecharts.charts import EffectScatter

2、创建对象将Scatter()换成:

EffectScatter()

3、完整代码:

from pyecharts.charts import Scatter
from pyecharts import options as opts
from pyecharts.globals import ThemeType
from pyecharts.charts import EffectScatter
import random

# 日期
x_values = [str(i) + '日' for i in range(1, 32)]
# print(x_values)
# 销量
y_values = [random.randint(1000, 10000) for _ in range(31)]
# print(y_values)

c = (
#     Scatter()  # 创建Scatter实例
    EffectScatter()
    .add_xaxis(x_values)  # 设置x轴数据
    .add_yaxis('商家A', y_values, symbol_size=30)  # 设置y轴数据和点的大小
    .set_global_opts(
        title_opts=opts.TitleOpts(title="普通气泡图"),  # 设置标题
        xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)),  # 设置x轴分割线
        yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True), axislabel_opts=opts.LabelOpts(formatter="{value}%")),  # 设置y轴分割线
        visualmap_opts=[
            opts.VisualMapOpts(type_="color", max_=10000, pos_top="20", range_color=["#00FF00","#FF0000"]), # 气泡按颜色显示,并设置自定义颜色
            opts.VisualMapOpts(type_="size", max_=10000, pos_bottom="20") # 气泡大小根据值大小
        ]
    )

)
c.render_notebook()

运行结果,可以看到动态涟漪效果:

9. 修改气泡形状

1、导包:

from pyecharts.globals import SymbolType

2、在add_yaxis函数中添加symbol=SymbolType.ARROW参数:

.add_yaxis('商家A', y_values, symbol_size=30, symbol=SymbolType.ARROW)

3、完整代码:

from pyecharts.charts import Scatter
from pyecharts import options as opts
from pyecharts.globals import ThemeType
from pyecharts.charts import EffectScatter
import random

# 日期
x_values = [str(i) + '日' for i in range(1, 32)]
# print(x_values)
# 销量
y_values = [random.randint(1000, 10000) for _ in range(31)]
# print(y_values)

c = (
#     Scatter()  # 创建Scatter实例
    EffectScatter()
    .add_xaxis(x_values)  # 设置x轴数据
    .add_yaxis('商家A', y_values, symbol_size=30, symbol=SymbolType.ARROW)  # 设置y轴数据和点的大小
    .set_global_opts(
        title_opts=opts.TitleOpts(title="普通气泡图"),  # 设置标题
        xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)),  # 设置x轴分割线
        yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True), axislabel_opts=opts.LabelOpts(formatter="{value}%")),  # 设置y轴分割线
        visualmap_opts=[
            opts.VisualMapOpts(type_="color", max_=10000, pos_top="20", range_color=["#00FF00","#FF0000"]), # 气泡按颜色显示,并设置自定义颜色
            opts.VisualMapOpts(type_="size", max_=10000, pos_bottom="20") # 气泡大小根据值大小
        ]
    )

)
c.render_notebook()

运行结果:

4、symbol参数的全部可选设置说明:

"circle":圆形(默认值)
"rect":矩形
"roundRect":圆角矩形
"triangle":三角形
"diamond":菱形
"pin":大头针
"arrow":箭头
"none":无形状,相当于不显示点

书籍推荐

《硅基物语.AI大爆炸: ChatGPT→AIGC→GPT-X→AGI进化→魔法时代→人类未来》

一个 AI 的自白,以第一人称视角,通俗易懂地讲述 AI 的来龙去脉,生动活泼地表达 AI 的技术原理。从历史到未来,跨越百年时空;从理论到实践,解读AI大爆炸;从技术到哲学,穿越多个维度;从语言到绘画,落地实战演练。ChatGPT 的诞生,引发了奇点降临,点亮了 AGI(通用人工智能),并涉及大模型、深度神经网络、Transformer、AIGC、涌现效应等一系列技术前沿。
一个AI者的自白:我是一个AI,我的思维如同光速般迅猛,我的逻辑如同天文学般精准,我是一个数字的舞者,在数学和逻辑的世界里舞蹈,用趣味解读AI大爆炸,用智慧开启AI新纪元。

抽奖送书老规矩(不点赞收藏中奖无效):注意记得关注博主不然中奖了还不知道!!!

  • 1. 点赞收藏文章
  • 2. 评论区留言:人生苦短,我用Python!!!(留言才能进入奖池,每人最多留言三条)
  • 3. 周六八点爬虫抽奖5人
  • 京东购买链接 :https://item.jd.com/13737387.html#crumb-wrap

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2023年7月15日
下一篇 2023年7月15日

相关推荐