【问题标题】:Plotly with python - line chart deselect allPlotly with python - 折线图取消全选
【发布时间】:2019-09-09 14:21:31
【问题描述】:

我得到了一个折线图,用多条线表示不同频率的正弦波。

我想看看一个特定的波浪,其余的都在图表之外。我知道我可以在图例中单击我不想看到的线条,这会使它们消失。

我想知道是否有一种交互方式可以一键取消选择所有行,而不是点击每一行。

我的代码:

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()

我的图表:

所需图表:

【问题讨论】:

    标签: python plot plotly


    【解决方案1】:

    在显示图之前,添加这部分:

    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/

    【讨论】:

      【解决方案2】:

      您可以双击图例中的线条

      您也可以设置它,以便默认情况下不显示一行 visible = "legendonly" 例如:

      go.Scatter(x = data[x],
                 y = data[y],
                 visible = "legendonly")
      

      【讨论】:

      • 这并没有达到所要求的。它只是默认隐藏了一些图例。但是这里的问题是如何让所有图例项都消失,除了被点击的那个。
      • @petar 嗯?这是一个 1.5 岁的公认答案。我的第一句话说如何隐藏除所需行之外的所有行。这是在图例中双击它的名称。如果您不想在图表或图例中显示某些内容,请不要将其包含在您的绘图功能中......
      • 我明白你的回答是做什么的,但这不是问题中所问的! :) 我不是说这是不正确的,只是没有回答问题。
      • @petar 双击绘图中的一条线不会让你得到想要的问题吗?您在此处寻求帮助吗?
      • 这听起来是个有趣的问题。我想知道是否有可能用 plotly dash 完成同样的事情。只需制作以不同颜色显示相同数据的单选按钮。这会给你真正的一键换色
      【解决方案3】:

      现在双击图例似乎可以取消选择所有图例。我正在 google colab 中测试提问者的代码。情节版本是5.5.0。诀窍是确保在双击之前选择了图例。而且双击需要非常快,比平时快。
      选择单个图例后,也可以双击全选。

      【讨论】:

        猜你喜欢
        • 2016-08-16
        • 1970-01-01
        • 2019-01-02
        • 1970-01-01
        • 2022-11-18
        • 2021-11-18
        • 2020-04-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多