Plotly散点标记自定义颜色失效,仅显示最后一个颜色求助
解决Plotly散点颜色不生效及竖线绘制问题
一、散点颜色问题修复
你当前代码的问题是:循环四次添加散点trace,每个trace都包含四个完全重叠的点,最终只有最后一个trace的颜色会显示出来。要给每个点分配自定义颜色,只需要单次添加散点trace,直接将marker.color设为颜色列表即可:
import plotly.graph_objects as go from plotly.subplots import make_subplots Prod=[450000, 500000, 420000,300000] colors = ['rgb(215,209,209)','rgb(170,170,170)', 'rgb(115,115,115)','rgb(67,67,67)'] fig = make_subplots(rows=1, cols=2, column_widths=[0.85,0.15]) # 单次添加散点,每个点对应colors中的颜色 fig.add_trace(go.Scatter( x=[0]*4, y=Prod, name="Total Year", marker=dict( color=colors, # 直接绑定颜色列表 size=12 ) ), row=1, col=2)
二、竖线绘制方法
Plotly有两种高效的竖线绘制方式,无需用散点模拟:
方法1:用add_shape绘制(推荐)
add_shape是Plotly专门用于绘制几何形状的API,直接指定竖线的x坐标和y轴范围即可:
fig.add_shape( type='line', x0=0, x1=0, # 竖线的x轴固定值 y0=min(Prod)-20000, y1=max(Prod)+20000, # y轴范围,上下留余量更美观 line=dict(color='gray', width=2), row=1, col=2 # 指定绘制在右侧子图 )
方法2:用Scatter绘制竖线
通过设置mode='lines',用两个点定义竖线的起止位置:
fig.add_trace(go.Scatter( x=[0, 0], y=[min(Prod)-20000, max(Prod)+20000], mode='lines', line=dict(color='gray', width=2), showlegend=False # 不显示在图例中 ), row=1, col=2)
完整代码示例
结合颜色设置和竖线绘制的完整代码如下:
import plotly.graph_objects as go from plotly.subplots import make_subplots Prod=[450000, 500000, 420000,300000] colors = ['rgb(215,209,209)','rgb(170,170,170)', 'rgb(115,115,115)','rgb(67,67,67)'] fig = make_subplots(rows=1, cols=2, column_widths=[0.85,0.15]) # 添加带自定义颜色的散点 fig.add_trace(go.Scatter( x=[0]*4, y=Prod, name="Total Year", marker=dict( color=colors, size=12 ) ), row=1, col=2) # 添加竖线 fig.add_shape( type='line', x0=0, x1=0, y0=min(Prod)-20000, y1=max(Prod)+20000, line=dict(color='gray', width=2), row=1, col=2 ) fig.show()
内容的提问来源于stack exchange,提问作者Anthony Sieuw
相关产品推荐
相关产品推荐

