『Plotly实战指南』--样式定制高级篇

打印 上一主题 下一主题

主题 1693|帖子 1693|积分 5079

在数据可视化领域,Plotly不但是高效的绘图工具,更是设计师的创意画布。
当基础图表已无法满足品牌化需求时,样式定制能力将成为数据叙事的关键武器。
深入的样式定制可以大概帮助我们打造品牌化图表、实现精准的视觉表达,并显著提升交互体验。
本文将深入探究Plotly的样式定制高级技巧,从自定义模板的创建到颜色映射与字体的高级应用,希望能帮助你更好的实现数据可视化项目。
1. 自定义模板

自定义模板是 Plotly 样式定制的焦点工具之一。
通过模板,我们可以定义图表的团体风格,包罗结构、颜色和字体等,从而实现一致性和可复用性。
1.1. 模板的创建

模板的创建基于一个字典结构,其中包含多个关键设置项。
  1. import plotly.express as px
  2. import plotly.graph_objects as go
  3. import plotly.io as pio
  4. # 创建自定义模板
  5. custom_template = go.layout.Template()
  6. custom_template.layout.paper_bgcolor = 'lightgray'
  7. custom_template.layout.plot_bgcolor = 'white'
  8. custom_template.layout.xaxis.gridcolor = '#f5b7b1'
  9. custom_template.layout.yaxis.gridcolor = '#abebc6'
  10. custom_template.layout.font.family = 'Arial'
  11. custom_template.layout.font.size = 12
  12. # 自定义模板的名称
  13. pio.templates["my_theme"] = custom_template
  14. df = px.data.iris()
  15. fig = px.scatter(df, x="sepal_width", y="sepal_length", template="my_theme")
  16. fig.show()
复制代码

借助 go.layout.Template() 创建一个新的模板对象,并且对模板的各项属性举行设置,例如背景颜色、网格颜色、字体等。
利用 pio.templates 把自定义模板添加到可用模板列表中。
1.2. 模板的生存与复用

创建好自定义模板后,可以将其生存为 JSON 文件,方便在其他项目中复用。
  1. import json
  2. # 将模板的布局转换为字典
  3. template_dict = {
  4.     'layout': custom_template.layout.to_plotly_json()
  5. }
  6. # 保存为 JSON 文件
  7. with open('custom_template.json', 'w') as f:
  8.     json.dump(template_dict, f, indent=4)
复制代码
其他项目通过加载custom_template.json来复用模板。
  1. # 从 JSON 文件加载模板
  2. with open("custom_template.json", "r") as f:
  3.     loaded_template_dict = json.load(f)
  4. # 将加载的模板添加到可用模板列表中
  5. pio.templates["loaded_custom_template"] = loaded_template_dict
  6. # 使用加载的自定义模板创建图表
  7. df = px.data.iris()
  8. fig = px.scatter(
  9.     df,
  10.     x="sepal_width",
  11.     y="sepal_length",
  12.     template="loaded_custom_template",
  13. )
  14. # 显示图表
  15. fig.show()
复制代码

2. 自定义颜色和字体

颜色和字体是视觉表达的关键元素。
通过自定义颜色映射和字体,我们可以进一步提升图表的视觉效果。
2.1. 离散颜色

离散颜色映射通常用于分类数据。以下是一个使用离散颜色映射的柱状图示例:
  1. import plotly.express as px
  2. # 加载数据
  3. df = px.data.tips()
  4. # 定义离散颜色映射
  5. discrete_colorscale = ["#4C72B0", "#55A868", "#C44E52", "#8172B2", "#CCB974"]
  6. # 绘制柱状图并应用离散颜色映射
  7. fig = px.bar(
  8.     df,
  9.     x="day",
  10.     y="total_bill",
  11.     color="sex",
  12.     color_discrete_sequence=discrete_colorscale,  # 使用离散颜色映射
  13.     title="按日和性别统计的总账单",
  14. )
  15. # 显示图表
  16. fig.show()
复制代码

在这个示例中:

  • color_discrete_sequence参数用于指定离散颜色映射
  • color参数指定了分类变量sex,Plotly根据这个变量为不同种别分配颜色
2.2. 连续颜色

连续颜色映射通常用于数值范围数据。以下是一个使用连续颜色映射的散点图示例:
  1. import plotly.express as px
  2. # 加载数据
  3. df = px.data.iris()
  4. # 定义连续颜色映射
  5. continuous_colorscale = [[0, "#FFEDA0"], [0.5, "#FEB24C"], [1, "#E6550D"]]
  6. # 绘制散点图并应用连续颜色映射
  7. fig = px.scatter(
  8.     df,
  9.     x="sepal_width",
  10.     y="sepal_length",
  11.     size="petal_length",
  12.     color="petal_width",
  13.     color_continuous_scale=continuous_colorscale,  # 使用连续颜色映射
  14.     title="Iris 数据集:萼片宽度与萼片长度",
  15. )
  16. # 显示图表
  17. fig.show()
复制代码

在这个示例中:
color_continuous_scale参数使用了Plotly内置的颜色映射方案Viridis。
Plotly 提供了许多其他内置颜色映射方案,如Plasma、Inferno、Magma等。
2.3. 分级字体控制

分级字体控制允许你为不同的图表元素(如标题、图例、坐标轴标签等)设置不同的字体样式。
  1. import plotly.express as px
  2. # 加载数据
  3. df = px.data.tips()
  4. # 绘制柱状图
  5. fig = px.bar(
  6.     df, x="day", y="total_bill", color="sex", title="按日和性别统计的总账单"
  7. )
  8. # 分级字体设置
  9. fig.update_layout(
  10.     title_font={"family": "Roboto", "size": 24, "color": "#333333"},  # 标题字体
  11.     legend_font={"family": "Open Sans", "size": 14, "color": "#555555"},  # 图例字体
  12.     xaxis_title_font={"family": "Lato", "size": 16, "color": "#333333"},  # X 轴标题字体
  13.     yaxis_title_font={"family": "Lato", "size": 16, "color": "#333333"},  # Y 轴标题字体
  14.     xaxis_tickfont={"family": "Arial", "size": 12, "color": "#666666"},  # 坐标轴刻度字体
  15.     yaxis_tickfont={"family": "Arial", "size": 15, "color": "#666666"},  # 坐标轴刻度字体
  16. )
  17. # 显示图表
  18. fig.show()
复制代码

在这个示例中:

  • title_font设置了标题的字体样式
  • legend_font设置了图例的字体样式
  • xaxis_title_font和yaxis_title_font分别设置了 X 轴和 Y 轴标题的字体样式
  • xaxis_tickfont和yaxis_tickfont设置了坐标轴刻度的字体样式
3. 总结

通过深入的样式定制,Plotly可以大概实现可视化的一致性、提升信息转达效率和优化用户体验。
以下是几点实践建议:

  • 模板设计遵循「颜色-结构-字体」优先级原则:颜色是视觉的第一印象,结构决定了团体结构,字体则影响细节体验
  • 颜色映射需保证色盲友好性:避免红绿直接对比,选择色盲友好的配色方案。
  • 字体选择需考虑多平台兼容性:优先使用 Web 安全字体,并为自定义字体设置回退选项。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

冬雨财经

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表