首页 > 解决方案 > 即使在 plotly 中未选择任何轨迹,也显示色阶

问题描述

我有一个情节情节,有 2 条痕迹,其中标记啤酒颜色编码。为了显示色阶,我为每条迹线添加了 showscale=True (两条迹线都是规范的)。

import plotly.graph_objects as go
import pandas as pd

df1 = pd.DataFrame({'lat': [50.941357, 50.932171],
                    'lon': [6.957768, 6.964412],
                    'value': [0.5, 0.75]})

df2 = pd.DataFrame({'lat': [50.938571, 51.038203],
                    'lon': [6.961860, 7.001457],
                    'value': [0.25, 0.99]})


def get_trace(df, trace_name):
    trace = go.Scattermapbox(
        lat=df['lat'],
        lon=df['lon'],
        mode='markers',
        name=trace_name,
        marker=go.scattermapbox.Marker(
            color=df['value'],
            colorscale=[[0, 'green'], [0.5, 'yellow'], [1.0, 'red']],
            size=40,
            cmin=0,
            cmax=1,
            showscale=True
        ),
    )
    return trace


fig = go.Figure([get_trace(df1, 'trace 1'), get_trace(df2, 'trace 2')])

fig.update_layout(mapbox_style="open-street-map",
                  mapbox={'center': go.layout.mapbox.Center(lat=50.970990, lon=6.984498), 'zoom': 11},
                  showlegend=True,
                  legend={'x': 0, 'y': 1}
                  )

fig.show()

这产生以下地图:

例子Plot1

如果我取消选择图例中的两条迹线,则(当然)色阶也不可见:

例子Plot2

无论是否选择了迹线,如何显示色阶?

标签: pythonplotlymapbox

解决方案


我找到了解决我的问题的方法。我添加了一个伪空跟踪并将其隐藏在图例中。

empty_trace = go.Scattermapbox(
    lat=[0.0],
    lon=[0.0],
    mode='markers',
    name='empty',
    showlegend=False,
    marker=go.scattermapbox.Marker(
        colorscale=[[0, 'green'], [0.5, 'yellow'], [1.0, 'red']],
        size=0,
        cmin=0,
        cmax=1,
        showscale=True
    ),
)

对于我删除的其他痕迹showscale=True


推荐阅读