在 plotly 中为子图共享相同的图例
Posted
技术标签:
【中文标题】在 plotly 中为子图共享相同的图例【英文标题】:Sharing same legends for subplots in plotly 【发布时间】:2020-06-30 05:22:29 【问题描述】:我在同一图中使用 subplots
在 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)
输出:
我想为两个子图共享相同的图例。所以,我尝试指定一个图例组 (ref)。有效,但出现重复标签
任何有关如何删除重复项的建议都会有所帮助
【问题讨论】:
使用,showlegend=False
帮助!。问题已解决。
请回答您自己的问题,以便其他人可以从中受益。
【参考方案1】:
在访问 df2 的实例中添加 showlegend = False
将删除重复的图例
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
)
【讨论】:
请务必注意,您还应该将legendgroup
属性设置为与其他跟踪相同的值。我添加了showlegend=False
没有legendgroup
,但它不起作用。以上是关于在 plotly 中为子图共享相同的图例的主要内容,如果未能解决你的问题,请参考以下文章