如何在 Plotly 的图中定位图例
Posted
技术标签:
【中文标题】如何在 Plotly 的图中定位图例【英文标题】:How to position legends inside a plot in Plotly 【发布时间】:2020-05-24 04:33:44 【问题描述】:我从 Plotly 页面获得了此代码。我需要使背景透明并突出显示轴。还有位于情节中的传说。
import plotly.graph_objects as go
fig = go.Figure()
fig.add_trace(go.Scatter(
x=[1, 2, 3, 4, 5],
y=[1, 2, 3, 4, 5],
name="Increasing"
))
fig.add_trace(go.Scatter(
x=[1, 2, 3, 4, 5],
y=[5, 4, 3, 2, 1],
name="Decreasing"
))
fig.update_layout(legend_title='<b> Trend </b>')
fig.show()
上面的代码显示了下面的输出:
我的预期输出:
如何转换第一张图片以获得第二张图片的特征?
【问题讨论】:
【参考方案1】:import plotly.graph_objects as go
fig = go.Figure()
fig.add_trace(go.Scatter(
x=[1, 2, 3, 4, 5],
y=[1, 2, 3, 4, 5],
))
fig.add_trace(go.Scatter(
x=[1, 2, 3, 4, 5],
y=[5, 4, 3, 2, 1],
))
fig.update_layout(
legend=dict(
x=0,
y=.5,
traceorder="normal",
font=dict(
family="sans-serif",
size=12,
color="black"
),
)
)
fig.show()
在 0 到 1 之间改变 x 和 y 的值
output
【讨论】:
【参考方案2】:要更改背景颜色需要通过plot_bgcolor='rgba(0,0,0,0)',
指定,而要将图例移动到左侧,则需要明确定义位置:
import plotly.graph_objects as go
trace0 = go.Scatter(
x=[1, 2, 3, 4, 5],
y=[1, 2, 3, 4, 5],
name="Increasing"
)
trace1 = go.Scatter(
x=[1, 2, 3, 4, 5],
y=[5, 4, 3, 2, 1],
name="Decreasing"
)
data = [trace0, trace1]
layout = go.Layout(
plot_bgcolor='rgba(0,0,0,0)',
legend=dict(
x=0,
y=0.7,
traceorder='normal',
font=dict(
size=12,),
),
annotations=[
dict(
x=0,
y=0.75,
xref='paper',
yref='paper',
text='Trend',
showarrow=False
)
]
)
fig = go.Figure(data = data,
layout = layout)
fig.update_xaxes(showgrid=True, gridwidth=1, gridcolor='LightGray')
fig.update_yaxes(showgrid=True, gridwidth=1, gridcolor='LightGray')
fig.show()
你会得到:
【讨论】:
你知道任何选项/简单的方法可以像 Matplotlib 一样自动将图例定位在图中(取决于轨迹)吗?以上是关于如何在 Plotly 的图中定位图例的主要内容,如果未能解决你的问题,请参考以下文章