考虑以下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)
但是,这种方法似乎不是最优的:除了添加单行所需的冗长程度外,它还使我手动“采样”直线,并将行高添加到鼠标悬停时的工具提示上。
是否有更好的方法来实现这一目标?
或者,您可以使用 add_shape 方法,请参阅此处的文档。如果添加以下代码,则可以添加与上面相同的 y=4 行。
fig.add_shape(type="line",
x0=4,
y0=0,
x1=4,
y1=10)
Run Code Online (Sandbox Code Playgroud)
您好,从我的问题中可以看出,您需要绘图形状功能并为绘图生成一条水平线。
请在下面的代码中进行与问题中显示的图形相同的图形
码:
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)
输出:
附加参考: