如何在plotly中向散点图添加单条线?

glS*_*glS 1 python plotly

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

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])
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

如果我现在想在此图上添加一条(例如)水平线怎么办?我通过文档去,例如部分上线和散射和上线图,但没有的例子似乎讨论如何覆盖不同的地块,或简单地画直线和类似的形状。

一个简单的方法是将直线添加为第二个散点图,如下所示:

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])
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

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

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

Jon*_*how 6

或者,您可以使用 add_shape 方法,请参阅此处的文档。如果添加以下代码,则可以添加与上面相同的 y=4 行。

fig.add_shape(type="line",
              x0=4, 
              y0=0, 
              x1=4, 
              y1=10)
Run Code Online (Sandbox Code Playgroud)


Nar*_*ali 5

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

请在下面的代码中进行与问题中显示的图形相同的图形

码:

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)
Run Code Online (Sandbox Code Playgroud)

输出:

形状

附加参考:

  1. 形状示例

  2. 绘图形状参考