You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Python Plotly go.Scatter(mode="lines")添加Y轴抖动以避免线条重叠

Plotly 解决线条重叠、添加Y轴抖动并让短线居上的实现方案

现有如下DataFrame,需要为每个索引绘制从Starting point到Walking的绿色线条,以及从Starting point到Driving的红色线条,但原代码绘制的线条出现重叠,需修改代码实现:

  • 为不同类别的线条添加Y轴抖动效果,避免重叠
  • 让较短的线条显示在较长线条的上方

原DataFrame:

Starting point  Walking Driving
Lunch       0   8   4
Shopping    0   7   3
Coffee      0   5   2

修改后的完整代码

import pandas as pd
import plotly.graph_objects as go

df7 = pd.DataFrame({
    'Starting point': [0, 0, 0],
    'Walking': [8, 7, 5],
    'Driving': [4, 3, 2]
}, index=['Lunch', 'Shopping', 'Coffee'])

fig9 = go.Figure()

# 定义各列的样式配置:颜色、Y轴偏移量
col_config = {
    'Walking': {'color': '#00A86B', 'y_offset': 0.1},  # 绿色,向上偏移
    'Driving': {'color': '#E2062B', 'y_offset': -0.1}   # 红色,向下偏移
}

# 将字符串索引转为数值化Y轴位置,方便添加偏移
y_base = {idx: pos for pos, idx in enumerate(df7.index)}

for idx in df7.index:
    # 按线长从长到短排序,先画长线再画短线,确保短线显示在上方
    sorted_cols = sorted(col_config.keys(), key=lambda c: df7.loc[idx, c], reverse=True)
    for col in sorted_cols:
        cfg = col_config[col]
        # 获取当前线条的X值
        x_data = df7.loc[idx, ["Starting point", col]]
        # 生成带偏移的Y值
        y_data = [y_base[idx] + cfg['y_offset']] * len(x_data)
        
        fig9.add_trace(
            go.Scatter(
                y=y_data,
                x=x_data,
                showlegend=False,
                mode="lines+markers",
                marker={"color": cfg['color'], "symbol": "diamond"},
                line={"color": cfg['color']}
            )
        )

# 还原Y轴为原始索引标签
fig9.update_layout(
    yaxis=dict(
        tickmode='array',
        tickvals=list(y_base.values()),
        ticktext=list(y_base.keys())
    )
)

fig9.show()

关键修改说明

  • Y轴数值化与偏移:把字符串索引转为数值位置,给不同类别的线条添加±0.1的偏移量,实现抖动效果,彻底避免线条重叠
  • 控制绘制顺序:对每个索引,先绘制长线(数值更大的列),再绘制短线(数值更小的列)——Plotly中后添加的轨迹会显示在上方,确保短线居上
  • 样式绑定:用字典直接映射列对应的颜色和偏移,逻辑清晰易维护
  • 还原Y轴标签:通过tickvals和ticktext把数值化的Y轴还原为原始索引名称,保证图表可读性

内容的提问来源于stack exchange,提问作者plotmaster473

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 10:04:52