即使在绘图中未选择任何迹线也显示色标

时间:2020-06-24 13:38:42

标签: python plotly mapbox

我有一个阴谋的情节,上面有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()

这将产生以下地图:

examplePlot1

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

examplePlot2

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

1 个答案:

答案 0 :(得分:0)

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

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