如何在 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 的图中定位图例的主要内容,如果未能解决你的问题,请参考以下文章

Plotly:使用 Python 在多线图中添加色阶

在 r plotly 条形图中排序

[散点图][Plotly][Python] 如何在散点图中标记心形

Plotly:仅在特定子图中堆积条形图

Plotly:如何在甘特图上标记条形?

Plotly 动画气泡图:图中没有数据