Skip to main content
 首页 » 编程设计

python之如何在 plotly 中将单行添加到散点图

2025年05月04日22mayingbao

考虑以下MWE使用python API plotly绘制散点图:

import plotly.plotly as py 
import plotly.graph_objs 
import plotly.offline 
plotly.offline.init_notebook_mode() 
 
data = list(range(10)) 
trace = plotly.graph_objs.Scatter( 
    x=list(range(len(data))), 
    y=data 
) 
plotly.offline.iplot([trace]) 

如果我现在想在此图中添加一条(比方说)水平线怎么办? 我浏览了文档,例如关于 line and scatter 的部分在 line charts 上,但似乎没有一个示例涵盖如何叠加不同的图,或者简单地绘制直线和类似的形状。

执行此操作的一种天真的方法是将线添加为第二个散点图,如下所示:

import plotly.plotly as py 
import plotly.graph_objs 
import plotly.offline 
plotly.offline.init_notebook_mode() 
 
data = list(range(10)) 
trace = plotly.graph_objs.Scatter( 
    x=list(range(len(data))), 
    y=data 
) 
trace_line = plotly.graph_objs.Scatter( 
    x=list(range(len(data))), 
    y=[4] * len(data), 
    mode='lines' 
) 
plotly.offline.iplot([trace, trace_line]) 

但这种方法似乎不是最佳选择:除了添加单行所需的冗长之外,它还让我手动“采样”直线,并在鼠标悬停时将行高添加到工具提示中。

是否有更好的方法来实现这一点?

请您参考如下方法:

您好,从您的问题中我可以看出您需要绘图形状功能并为绘图生成一条水平线。

请在下面找到用于执行问题中显示的相同图表的代码

代码:

from plotly.offline import iplot 
import plotly.graph_objs as go 
 
 
data = list(range(10)) 
trace = go.Scatter( 
    x=list(range(len(data))), 
    y=data 
) 
layout = { 
    'shapes': [ 
        # Line Horizontal 
        { 
            'type': 'line', 
            'x0': 0, 
            'y0': 4, 
            'x1': 10, 
            'y1': 4, 
            'line': { 
                'color': 'rgb(50, 171, 96)', 
                'width': 4 
            }, 
        } 
    ], 
    'showlegend': True 
} 
 
fig = { 
    'data': [trace], 
    'layout': layout, 
} 
 
 
iplot(fig) 

输出:

附加引用:

  1. plotly shapes examples

  2. plotly shapes reference