考虑以下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)
输出:
附加引用:
