我得到了一个折线图,其中有多条线代表不同频率的正弦波。
我想看一下特定的波浪,而其余的都不在图表中。我知道我可以在图例中单击我不想看到的线条,这样它们就会消失。
我想知道是否有一种交互式方式可以一次单击取消选择所有行,而不是单击每一行。
我的代码:
import numpy as np
import plotly.graph_objects as go
step = 1/1000
t = np.arange(0,1,step) # time vector
trig_func = lambda ff : np.sin(2*np.pi*ff*t)
fig = go.Figure()
for freq in [1, 3, 5, 7]:
y = trig_func(freq)
fig.add_trace(go.Scatter(x=t, y=y, name=f"{freq} Hz"))
fig.show()
您可以双击图例中的线
您还可以使用
visible = "legendonly"
设置默认情况下不显示线条,例如:
go.Scatter(x = data[x],
y = data[y],
visible = "legendonly")
在展示图之前,添加这部分:
fig.update_layout(dict(updatemenus=[
dict(
type = "buttons",
direction = "left",
buttons=list([
dict(
args=["visible", "legendonly"],
label="Deselect All",
method="restyle"
),
dict(
args=["visible", True],
label="Select All",
method="restyle"
)
]),
pad={"r": 10, "t": 10},
showactive=False,
x=1,
xanchor="right",
y=1.1,
yanchor="top"
),
]
))
这将添加按钮以一次取消选择和选择所有轨迹。它应该看起来像这样:
有关plotly中自定义按钮的更多信息:https://plotly.com/python/custom-buttons/
现在双击图例似乎可以取消选择所有图例。我正在 google colab 中测试提问者的代码。情节版本是5.5.0。 诀窍是确保在双击之前选择图例。并且双击需要非常快,比平常更快。
选择单个图例后,您也可以双击它来选择全部。
这可以通过利用 plotly 的双击延迟来完成。
import numpy as np
import plotly.graph_objects as go
config = {'doubleClickDelay': 1000}
step = 1/1000
t = np.arange(0,1,step) # time vector
trig_func = lambda ff : np.sin(2*np.pi*ff*t)
fig = go.Figure()
for freq in [1, 3, 5, 7]:
y = trig_func(freq)
fig.add_trace(go.Scatter(x=t, y=y, name=f"{freq} Hz"))
fig.show(config=config)