在数据可视化的世界里,饼图是一种直观且广泛使用的图表类型。

它能够将数据各个部分占整体的比例关系清晰地展现出来,适用于诸如市场占有率分析、调查结果分布、预算分配等多个领域。

饼图以扇形面积比例直观展示数据分布,适合用于:

  1. 分类数据的占比分析(如市场份额、用户画像)
  2. 少量数据的对比呈现(≤6 个分类最佳)
  3. 快速传达核心结论(如 "最大 / 最小占比项")

本文的主要内容包括饼图的基本绘制步骤、标签与百分比显示设置以及样式基础优化等方面。

1. 基本饼图绘制

1.1. 数据准备

使用 Plotly 绘制饼图时,数据主要通过两个参数进行传递:labelsvalues

  • labels: 用于指定每个数据切片的名称类别,它接受一个字符串列表
  • values:对应各个类别的数值大小,接受一个数值列表或数组

这种数据格式要求使得数据组织清晰明了,便于后续的图表生成。

比如:

import plotly.graph_objects as go

# 数据准备
labels = ['类别A', '类别B', '类别C', '类别D'] # 类别标签
values = [45, 25, 15, 15] # 对应数值

我们首先导入了 Plotlygraph_objects 模块,然后分别定义了类别标签和对应的数值列表,为后续的饼图绘制提供了数据基础。

然后绘制饼图:

# 创建饼图对象
fig = go.Figure(data=[go.Pie(labels=labels, values=values)])
fig.show()

通过 go.Pie() 函数,将准备好的数据传递进去,创建了一个基本的饼图对象。

这个对象包含了饼图的核心数据结构,后续可以通过对 fig 对象的进一步配置来定制图表的显示效果。

1.2. 标签设置

通过 text 参数,可以指定在饼图切片上显示的文本内容。

下面的示例中,我们将 text 设置为与 labels 相同的值,这样每个切片上就会显示对应的类别名称,方便快速识别各个切片所代表的类别。

# 文本标签配置
fig = go.Figure(data=[go.Pie(labels=labels, values=values, text=labels)])

还可以通过textposition='outside'参数将文本标签的位置设置在切片外部,避免文本在切片内部显示可能造成的拥挤和可读性问题。

# 文本位置调整
fig = go.Figure(data=[go.Pie(labels=labels, values=values, textposition='outside')])

2. 饼图样式优化

2.1. 切片颜色

通过 marker=dict(colors=...) 的方式,我们可以直接为每个切片指定颜色,替换 Plotly 的默认颜色方案。

合理选择颜色可以使图表更加美观,并且能够突出重点数据。

# 默认颜色方案调整
fig = go.Figure(
data=[
go.Pie(
labels=labels,
values=values,
marker=dict(
colors=[
"gold",
"mediumturquoise",
"darkorange",
"lightgreen",
]
),
)
],
)
fig.show()

除了通过颜色来突出某些切片以外,还可以使用 pull 参数可以将指定的切片从饼图中心拉出,实现高亮显示的效果。

这种显示方式常用于强调重点数据或异常值。

# 特定切片高亮
fig = go.Figure(data=[go.Pie(labels=labels, values=values, pull=[0, 0.2, 0, 0])])
fig.show()

2.2. 边框和背景

通过 marker=dict(...) 的方式,不仅可以指定切片的颜色,也可以指定边框的颜色和宽度。

# 切片边框调整
fig = go.Figure(
data=[
go.Pie(
labels=labels,
values=values,
marker=dict(line=dict(color="white", width=5)),
)
],
)
fig.show()

通过 marker=dict(line=dict(...)) 设置,使切片之间更加分明,提升图表的整洁度和美观度。

paper_bgcolor 参数用于设置整个图表的背景颜色,选择合适的背景色可以使图表在不同的展示环境中具有更好的视觉效果和可读性。

# 图表背景色配置
fig.update_layout(paper_bgcolor='lightgray')
fig.show()

还有plot_bgcolor 参数专门用于设置绘图区域的背景颜色,将其与图表背景色区分开来,增强图表的层次感和专业性。

# 绘图区域背景设置
fig.update_layout(plot_bgcolor='')

还有 opacity 参数,可以调整切片的透明度,使其在与其他图表元素叠加或在不同背景色下展示时更加协调和美观。

# 透明度调节
fig = go.Figure(data=[go.Pie(labels=labels, values=values, opacity=0.8)])

3. 总结

本文介绍了使用 Plotly 绘制基础饼图的方法和步骤,包括数据准备、基本绘制、标签设置以及样式基础优化等方面。

重点介绍了如何通过 labelsvalues 参数传递数据,

利用 textinfotextposition 等参数控制文本显示,以及通过颜色调整、边框设置、背景配置和透明度调节等手段优化饼图的样式,使图表更加美观和专业。

『Plotly实战指南』--饼图绘制基础篇的更多相关文章

  1. 20165308『网络对抗技术』Exp5 MSF基础应用

    20165308『网络对抗技术』Exp5 MSF基础应用 一.原理与实践说明 实践内容 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 一个主动攻击实 ...

  2. 20155308『网络对抗技术』Exp5 MSF基础应用

    20155308『网络对抗技术』Exp5 MSF基础应用 一.原理与实践说明 实践内容 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 一个主动攻击实 ...

  3. 『心善渊』Selenium3.0基础 — 24、Selenium的expected_conditions模块详细介绍

    目录 1.EC模块介绍 2.EC模块常用类 3.EC模块的使用 4.EC模块综合使用 (1)title_is(title)示例 (2)presence_of_element_located(locat ...

  4. 『心善渊』Selenium3.0基础 — 3、使用Selenium操作浏览器对象的基础API

    目录 1.导入Selenium库 2.创建浏览器对象 3.浏览器窗口大小设置 4.浏览器位置设置 5.请求访问网址 6.浏览器页面前进.后退和刷新 7.关闭浏览器 相比于高大上的各种Selenium进 ...

  5. 『心善渊』Selenium3.0基础 — 1、Selenium自动化测试框架介绍

    目录 1.Selenium介绍 2.Selenium的特点 3.Selenium版本说明 4.拓展:WebDriver与Selenium RC的区别 5.Webdriver工作原理 1.Seleniu ...

  6. 『心善渊』Selenium3.0基础 — 4、Selenium基础元素定位详解

    目录 1.什么是元素定位 2.Selenium元素定位常用API (1)By_id 定位 (2)by_name 定位 (3)by_class_name 定位 (4)by_tag_name 定位 (5) ...

  7. 『心善渊』Selenium3.0基础 — 6、Selenium中使用XPath定位元素

    目录 1.Selenium中使用XPath查找元素 (1)XPath通过id,name,class属性定位 (2)XPath通过标签中的其他属性定位 (3)XPath层级定位 (4)XPath索引定位 ...

  8. 『心善渊』Selenium3.0基础 — 10、使用Seleniun定位页面元素归纳总结(超详细)

    目录 1.Selenium中8种基本元素定位方式 (1)单数形式 (2)复数形式 2.By类定位的8种定位方式 (1)单数形式 (2)复数形式 3.XPath定位总结 (1)基础定位语法 (2)属性定 ...

  9. 『心善渊』Selenium3.0基础 — 11、Selenium对元素常用操作

    目录 1.Selenium对元素常用操作 2.Selenium对元素的其他操作 1.Selenium对元素常用操作 操作 说明 click() 单击元素 send_keys() 模拟输入 clear( ...

  10. 『心善渊』Selenium3.0基础 — 12、Selenium操作鼠标和键盘事件

    目录 (一)对鼠标的操作 1.鼠标事件介绍 2.ActionChains 类鼠标操作的常用方法 3.perform()方法 4.鼠标事件操作步骤 5.示例 (1)右键单击.左键双击 (2)鼠标拖拽动作 ...

随机推荐

  1. python创建项目虚拟环境

    创建一个文件夹用于存放你的虚拟环境 cd 到存放虚拟环境的地址 安装虚拟环境库: pip3 install virtualenv 创建虚拟环境:python3 -m venv 环境名称 激活虚拟环境: ...

  2. 自动化滑动极验v3示例

    import random import ddddocr from playwright.sync_api import sync_playwright import time import requ ...

  3. Solution Set - 冬日纪行(前半)

    目录 0.「集训队互测 2018」「LOJ #2504」小 H 爱染色 ✡️ 1.「LOJ #6402」yww 与校门外的树 2.「集训队互测 2019」「LOJ #3075」组合数求和 ✡️ 3.「 ...

  4. Java接口-详解

    一.基本概念 接口(Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合.接口通常以interface来声明.一个类通过继承接口的方式,从而来继承接口的抽象方法. 如果一个类只由 ...

  5. 项目PMP之十三相关方管理

    项目PMP之十三--相关方管理   一.定义: 核心理念: 每个项目都有相关方,他们会受项目的积极或消极影响,或者能对项目施加积极或消极的影响. 以相关方满意度作为项目目标进行识别和管理,并保持沟通, ...

  6. 路由协议过程概述--ospf-01

    路由是数据通信网络中最基本的要素.路由信息就是指导报文发送的路径信息,路由的过程就是报文转发的过程. 根据路由目的地的不同,路由可划分为: 网段路由:目的地为网段,IPv4地址子网掩码长度小于32位或 ...

  7. 天翼云重磅升级边缘WAF能力,助力企业高效应对Web安全威胁!

    "2022年,网络高危漏洞数量同比增长了13%:Q2遭受攻击的API数量月均超过了25万:物联网的普及大大降低了DDoS的攻击成本,大流量攻击指数显著提升:恶意Bot流量仍在持续增长,202 ...

  8. 一个登录功能也能玩出这么多花样?sa-token带你轻松搞定多地登录、单地登录、同端互斥登录

    需求场景 说起登录,你可能会不屑一顾,还有比这更简单的功能吗? 获取一下用户提交参数 username + password 和数据库中一比对,有记录返回[登录成功],无记录返回[用户名或密码错误] ...

  9. Windows中使用http-server搭建一个本地服务

    我们在开发中,经常会需要搭建一个本地服务去浏览开发的静态html文件,如果当静态文件中存在一些http.https或者访问文件之类的请求时,直接双击打开html文件是会报错预览不成功的,这时候就需要将 ...

  10. 程序员的生产力神器Cursor -新手实操指南

    不得不说这个Cursor AI简直是神器中的神器! 代码自动补全就算了,关键是它能直接读懂我的意图,秒懂需求!为你自动生成整个项目级别的代码!开发过程丝滑得像在跟老朋友聊天,代码质量贼高,效率提升10 ...