Plotly 峰值未出现在子图上
Posted
技术标签:
【中文标题】Plotly 峰值未出现在子图上【英文标题】:Plotly Spikes Not Appearing on Subplots 【发布时间】:2021-12-13 03:25:58 【问题描述】:我正在制作一个包含多个子图的图形。我希望每个子图都显示尖峰,但无法在第一个子图以外的任何其他地方显示尖峰。我没有看到通过 fig.update_traces 调用设置显示峰值的能力。有什么建议吗?
要重现的代码:
import plotly.graph_objs as go
from plotly.subplots import make_subplots
fig = make_subplots(rows=1, cols=2)
x1 = list(range(100))
y1 = [val**2 for val in x1]
x2 = list(range(150, 250))
y2 = [1./val for val in x2]
fig.add_trace(go.Scatter(x=x1, y=y1), row=1, col=1)
fig.add_trace(go.Scatter(x=x2, y=y2), row=1, col=2)
fig.update_layout(xaxis=dict(showspikes=True))
fig.show()
【问题讨论】:
这个 github 问题似乎相关:github.com/plotly/plotly.py/issues/1677 还有这个(扫描showspikes
和inside subplots
):plotly.com/python-api-reference/generated/…
我尝试将 uirevision=True
设置为 true 但这没有帮助。它说它应该使更改在子图中持续存在,并且显示尖峰包含在持续存在的事物列表中,因此我不确定出了什么问题。真实应该尽可能“真实”。
【参考方案1】:
Rob 的回答可能有效,但您可以通过以下方式达到同样的效果:
fig.update_xaxes(showspikes = True)
【讨论】:
两者都有效(所以我对两者都投了赞成票)但这是我希望的解决方案。谢谢!【参考方案2】: 确保在每个轴上设置 showspikes。您的图包含 xaxis 和 xaxis2 下面的代码使用 dict 理解来更新所有如果轴import plotly.graph_objs as go
from plotly.subplots import make_subplots
fig = make_subplots(rows=1, cols=2)
x1 = list(range(100))
y1 = [val**2 for val in x1]
x2 = list(range(150, 250))
y2 = [1./val for val in x2]
fig.add_trace(go.Scatter(x=x1, y=y1), row=1, col=1)
fig.add_trace(go.Scatter(x=x2, y=y2), row=1, col=2)
fig.update_layout(ax:"showspikes":True for ax in fig.to_dict()["layout"] if ax[0:3]=="xax")
【讨论】:
以上是关于Plotly 峰值未出现在子图上的主要内容,如果未能解决你的问题,请参考以下文章