如何修改Plotly默认符号序列?附配置报错最小工作示例
问题解决方法
错误原因
symbol_sequence不是go.Scatter对象的直接属性,放在go.Scatter初始化参数中会触发属性不存在的报错- 直接覆盖
my_template.data.scatter列表会丢失原有模板的默认配置,同时折线图默认不展示标记点,导致marker大小配置看似未生效
正确可运行代码
import plotly.express as px import plotly.io as pio import plotly.graph_objects as go my_template = pio.templates['ggplot2'] # 复制基础模板 # 修改全局默认符号序列 my_template.layout.symbolsequence = ['circle', 'square', 'diamond', 'cross', 'x', 'star'] # 修改scatter默认marker大小,不覆盖原有模板配置 if len(my_template.data.scatter) == 0: my_template.data.scatter = [go.Scatter(marker=dict(size=22))] else: my_template.data.scatter[0].marker.size = 22 pio.templates.default = my_template # 设置为默认模板 fig = px.line( data_frame = px.data.gapminder(), x = "year", y = "lifeExp", color = "country", symbol = "continent", markers = True # 开启折线图标记点渲染,否则看不到marker效果 ) fig.show()
配置说明
- 全局符号序列的正确配置入口是模板的
layout.symbolsequence属性,不属于单个图形trace的配置项 - 模板的
data.scatter列表存储的是散点类trace的默认配置,直接覆盖整个列表会丢失原有模板的预设样式,只需要修改对应属性即可 - Plotly Express的
px.line默认仅渲染折线,必须显式传入markers=True才会渲染标记点,否则marker相关的大小、符号配置都不会在图上体现
内容的提问来源于stack exchange,提问作者user171780
相关产品推荐
相关产品推荐

