在 plotly 中为子图共享相同的图例

Nat*_*sha 5 plot legend python-3.x subplot plotly

我在同一个图中使用subplotsin plotly创建了两个图。

import plotly.graph_objects as go
import numpy as np
import pandas as pd
from plotly.subplots import make_subplots

df = pd.DataFrame(np.random.randint(0, 100, size=(20, 5)), columns=list('tABCD'))
df2 = pd.DataFrame(np.random.randint(0, 100, size=(20, 5)), columns=list('tABCD'))

fig = go.Figure()
fig = make_subplots(rows=1, cols=2)

fig.add_trace(go.Scatter(
                x=df.t,
                y=df['A'],
                name="1",
                line_color='deepskyblue',
                opacity=0.8,
                legendgroup='group1'),
                row=1, col=1
                )

fig.add_trace(go.Scatter(
                x=df.t,
                y=df['B'],
                name="2",
                line_color='dimgray',
                opacity=0.8,
                legendgroup='group2'),
                row=1, col=1
                )

fig.add_trace(go.Scatter(
                x=df.t,
                y=df['C'],
                name="3",
                line_color='blue',
                opacity=0.8,
                legendgroup='group3'),
                row=1, col=1
                )

fig.add_trace(go.Scatter(
                x=df.t,
                y=df['D'],
                name="4",
                line_color='red',
                opacity=0.8,
                legendgroup='group4'),
                row=1, col=1
                )

fig.add_trace(go.Scatter(
                x=df2.t,
                y=df2['A'],
                name="1",
                line_color='deepskyblue',
                opacity=0.8,
                legendgroup='group1'),
                row=1, col=2
                )

fig.add_trace(go.Scatter(
                x=df2.t,
                y=df2['B'],
                name="2",
                line_color='dimgray',
                opacity=0.8,
                legendgroup='group2'),
                row=1, col=2
                )

fig.add_trace(go.Scatter(
                x=df2.t,
                y=df2['C'],
                name="3",
                line_color='blue',
                opacity=0.8,
                legendgroup='group3'),
                row=1, col=2
                )

fig.add_trace(go.Scatter(
                x=df2.t,
                y=df2['D'],
                name="4",
                line_color='red',
                opacity=0.8,
                legendgroup='group4'),
                row=1, col=2
                )

fig.write_html('ts.html', auto_open=True)
Run Code Online (Sandbox Code Playgroud)

输出: 在此处输入图片说明

我想为两个子图分享​​相同的图例。所以,我尝试指定一个图例组(ref)。它有效,但出现重复的标签

关于如何删除重复项的任何建议都会有所帮助

Nat*_*sha 8

showlegend = False在访问 df2 的实例中添加将删除重复的图例

fig.add_trace(go.Scatter(
                x=df2.t,
                y=df2['A'],
                name="1",
                line_color='deepskyblue',
                opacity=0.8,
                legendgroup='group1',
                showlegend=False),
                row=1, col=2
                )
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,您还应该将“legendgroup”属性设置为与其他跟踪相同的值。我在没有“legendgroup”的情况下添加了“showlegend=False”,但它不起作用。 (11认同)
  • 同意@lukeic:如果没有“legendgroup”,则不会显示重复的图例,但单击图例不会隐藏所有曲线。当然,不同群体的“legendgroup”应该是不同的。这个答案中的情况并非如此。 (4认同)