『Plotly实战指南』--样式定制高级篇
在数据可视化领域,Plotly不仅是高效的绘图工具,更是设计师的创意画布。
当基础图表已无法满足品牌化需求时,样式定制能力将成为数据叙事的关键武器。
深入的样式定制能够帮助我们打造品牌化图表、实现精准的视觉表达,并显著提升交互体验。
本文将深入探讨Plotly的样式定制高级技巧,从自定义模板的创建到颜色映射与字体的高级应用,希望能帮助你更好的实现数据可视化项目。
1. 自定义模板
自定义模板是 Plotly 样式定制的核心工具之一。
通过模板,我们可以定义图表的整体风格,包括布局、颜色和字体等,从而实现一致性和可复用性。
1.1. 模板的创建
模板的创建基于一个字典结构,其中包含多个关键配置项。
import plotly.express as px
import plotly.graph_objects as go
import plotly.io as pio
# 创建自定义模板
custom_template = go.layout.Template()
custom_template.layout.paper_bgcolor = 'lightgray'
custom_template.layout.plot_bgcolor = 'white'
custom_template.layout.xaxis.gridcolor = '#f5b7b1'
custom_template.layout.yaxis.gridcolor = '#abebc6'
custom_template.layout.font.family = 'Arial'
custom_template.layout.font.size = 12
# 自定义模板的名称
pio.templates["my_theme"] = custom_template
df = px.data.iris()
fig = px.scatter(df, x="sepal_width", y="sepal_length", template="my_theme")
fig.show()

借助 go.layout.Template() 创建一个新的模板对象,并且对模板的各项属性进行设置,例如背景颜色、网格颜色、字体等。
利用 pio.templates 把自定义模板添加到可用模板列表中。
1.2. 模板的保存与复用
创建好自定义模板后,可以将其保存为 JSON 文件,方便在其他项目中复用。
import json
# 将模板的布局转换为字典
template_dict = {
'layout': custom_template.layout.to_plotly_json()
}
# 保存为 JSON 文件
with open('custom_template.json', 'w') as f:
json.dump(template_dict, f, indent=4)
其他项目通过加载custom_template.json来复用模板。
# 从 JSON 文件加载模板
with open("custom_template.json", "r") as f:
loaded_template_dict = json.load(f)
# 将加载的模板添加到可用模板列表中
pio.templates["loaded_custom_template"] = loaded_template_dict
# 使用加载的自定义模板创建图表
df = px.data.iris()
fig = px.scatter(
df,
x="sepal_width",
y="sepal_length",
template="loaded_custom_template",
)
# 显示图表
fig.show()

2. 自定义颜色和字体
颜色和字体是视觉表达的关键元素。
通过自定义颜色映射和字体,我们可以进一步提升图表的视觉效果。
2.1. 离散颜色
离散颜色映射通常用于分类数据。以下是一个使用离散颜色映射的柱状图示例:
import plotly.express as px
# 加载数据
df = px.data.tips()
# 定义离散颜色映射
discrete_colorscale = ["#4C72B0", "#55A868", "#C44E52", "#8172B2", "#CCB974"]
# 绘制柱状图并应用离散颜色映射
fig = px.bar(
df,
x="day",
y="total_bill",
color="sex",
color_discrete_sequence=discrete_colorscale, # 使用离散颜色映射
title="按日和性别统计的总账单",
)
# 显示图表
fig.show()

在这个示例中:
color_discrete_sequence参数用于指定离散颜色映射color参数指定了分类变量sex,Plotly根据这个变量为不同类别分配颜色
2.2. 连续颜色
连续颜色映射通常用于数值范围数据。以下是一个使用连续颜色映射的散点图示例:
import plotly.express as px
# 加载数据
df = px.data.iris()
# 定义连续颜色映射
continuous_colorscale = [[0, "#FFEDA0"], [0.5, "#FEB24C"], [1, "#E6550D"]]
# 绘制散点图并应用连续颜色映射
fig = px.scatter(
df,
x="sepal_width",
y="sepal_length",
size="petal_length",
color="petal_width",
color_continuous_scale=continuous_colorscale, # 使用连续颜色映射
title="Iris 数据集:萼片宽度与萼片长度",
)
# 显示图表
fig.show()

在这个示例中:
color_continuous_scale参数使用了Plotly内置的颜色映射方案Viridis。
Plotly 提供了许多其他内置颜色映射方案,如Plasma、Inferno、Magma等。
2.3. 分级字体控制
分级字体控制允许你为不同的图表元素(如标题、图例、坐标轴标签等)设置不同的字体样式。
import plotly.express as px
# 加载数据
df = px.data.tips()
# 绘制柱状图
fig = px.bar(
df, x="day", y="total_bill", color="sex", title="按日和性别统计的总账单"
)
# 分级字体设置
fig.update_layout(
title_font={"family": "Roboto", "size": 24, "color": "#333333"}, # 标题字体
legend_font={"family": "Open Sans", "size": 14, "color": "#555555"}, # 图例字体
xaxis_title_font={"family": "Lato", "size": 16, "color": "#333333"}, # X 轴标题字体
yaxis_title_font={"family": "Lato", "size": 16, "color": "#333333"}, # Y 轴标题字体
xaxis_tickfont={"family": "Arial", "size": 12, "color": "#666666"}, # 坐标轴刻度字体
yaxis_tickfont={"family": "Arial", "size": 15, "color": "#666666"}, # 坐标轴刻度字体
)
# 显示图表
fig.show()

在这个示例中:
title_font设置了标题的字体样式legend_font设置了图例的字体样式xaxis_title_font和yaxis_title_font分别设置了 X 轴和 Y 轴标题的字体样式xaxis_tickfont和yaxis_tickfont设置了坐标轴刻度的字体样式
3. 总结
通过深入的样式定制,Plotly能够实现可视化的一致性、提升信息传达效率和优化用户体验。
以下是几点实践建议:
- 模板设计遵循「颜色-布局-字体」优先级原则:颜色是视觉的第一印象,布局决定了整体结构,字体则影响细节体验
- 颜色映射需保证色盲友好性:避免红绿直接对比,选择色盲友好的配色方案。
- 字体选择需考虑多平台兼容性:优先使用 Web 安全字体,并为自定义字体设置回退选项。
『Plotly实战指南』--样式定制高级篇的更多相关文章
- SpringBootTest单元测试实战、SpringBoot测试进阶高级篇之MockMvc讲解
1.@SpringBootTest单元测试实战 简介:讲解SpringBoot的单元测试 1.引入相关依赖 <!--springboot程序测试依赖,如果是自动创建项目默认添加--> &l ...
- 『Numpy学习指南』Matplotlib绘图
数据生成: import numpy as np import matplotlib.pyplot as plt func = np.poly1d(np.array([,,,])) func1 = f ...
- 『Numpy学习指南』排序&索引&抽取函数介绍
排序: numpy.lexsort(): numpy.lexsort()是个排字典序函数,因为很有意思,感觉也蛮有用的,所以单独列出来讲一下: 强调一点,本函数只接受一个参数! import nump ...
- Apache Beam实战指南 | 大数据管道(pipeline)设计及实践
Apache Beam实战指南 | 大数据管道(pipeline)设计及实践 mp.weixin.qq.com 策划 & 审校 | Natalie作者 | 张海涛编辑 | LindaAI 前 ...
- 「MySQL高级篇」explain分析SQL,索引失效&&常见优化场景
大家好,我是melo,一名大三后台练习生 专栏回顾 索引的原理&&设计原则 欢迎关注本专栏:MySQL高级篇 本篇速览 在我们上一篇文章中,讲到了索引的原理&&设计原则 ...
- 【阿里云产品公测】以开发者角度看ACE服务『ACE应用构建指南』
作者:阿里云用户mr_wid ,z)NKt# @I6A9do 如果感觉该评测对您有所帮助, 欢迎投票给本文: UO<claV RsfTUb)< 投票标题: 28.[阿里云 ...
- 2017-2018-2 20155303『网络对抗技术』Exp6:信息收集与漏洞扫描
2017-2018-2 20155303『网络对抗技术』 Exp6:信息收集与漏洞扫描 --------CONTENTS-------- 一.原理与实践说明 1.实践内容 2.基础问题 二.实践过程记 ...
- 2017-2018-2 20155303『网络对抗技术』Final:Web渗透获取WebShell权限
2017-2018-2 『网络对抗技术』Final:Web渗透获取WebShell权限 --------CONTENTS-------- 一.Webshell原理 1.什么是WebShell 2.We ...
- 2017-2018-2 20155303 『网络对抗技术』Exp3:免杀原理与实践
2017-2018-2 20155303 『网络对抗技术』Exp3:免杀原理与实践 --------CONTENTS-------- 1. 免杀原理与实践说明 实验说明 基础问题回答 2. 使用msf ...
- js实现『加载更多』功能实例
DEMO : 滚动加载示例 关于如何实现『加载更多』功能,网上有插件可用,例如比较著名的使用iscroll.js实现的上拉加载更多.下拉刷新功能. 但实际用起来却是很麻烦.由于是第三方插件,要按照对方 ...
随机推荐
- OpenAPI 简介
本文分享自天翼云开发者社区<OpenAPI 简介>,作者:蔡****钊 一.什么是open API API的全称是应用编程接口(Application Programming Interf ...
- 新格局,新生态!天翼云以国云智算底座赋能AI产业发展!
近日,中国云产业联盟暨中关村云计算产业联盟(以下简称"云联盟")主办的"首届AIGC全网小程序应用创新大会暨云联盟・移动应用专业委员会成立发布会"在中关村国家自 ...
- linux安装hbase
下载后解压到/opt/Servers/hbase-1.4.6 使用Hbase自带的zookeeper================================================== ...
- [TJOI2019] 甲苯先生的字符串 题解
有点水了-- 考虑相邻的不能放在一起,不相邻的可以,那么很容易想到转移方程: \[dp_{i,j}=\sum_{k=0}^{25}dp_{i-1,k}[j,k不相邻] \] 其中 \(dp_{i,j} ...
- 奥特曼框架autMan对接微信(千寻、西瓜)框架的详细教程
教程只写常用的两:西瓜.千寻,都运行在windows平台上. 1.千寻对接 文章底部下载千寻微信框架 解压至win电脑 电脑安装微信3.6.0.18并关闭自动更新 运行千寻微信框架 5.千寻框架设置 ...
- [rustGUI][iced]基于rust的GUI库iced(0.13)的部件学习(06):基于iced实现一个简单的图片浏览器
前言 本文是关于iced库的部件介绍,iced库是基于rust的GUI库,作者自述是受Elm启发. iced目前的版本是0.13.1,相较于此前的0.12版本,有较大改动. 本合集是基于新版本的关于分 ...
- 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
3月6日最新消息,阿里云通义千问官方宣布推出最新推理模型 QwQ-32B,这一模型仅有 32B 参数,但在效果上与拥有 671B 参数的 DeepSeek-R1 相媲美.如果你自己部署 DeepSee ...
- python 如何生成exe程序
cmd 安装包 pip install pyinstaller cd 进入程序文件夹内 3.输入命令pyinstaller -F xx.py 在dist文件夹下找到安装包即可
- Window10永久暂停(禁用)自动更新
终于彻底设置window10不自动更新了(禁用自动更新) 设置成功后的标识 设置成功后,重启电脑再打开就会显示这样的,这个才是禁用成功的标识: 之前安装了window 10 ,但是window 10 ...
- mac、windows 配置python国内镜像源
前言 我们在使用python pip安装第三方库时,经常会发生超时报错,这是可以指定临近的镜像源快速更新. mac中 在用户目录下建立一个".pip"目录,到目录里新建一个文件&q ...