3

我有一个示例数据集(pd.read_clipboard(sep='\s\s+') 读入熊猫):

    reference   Latitude    Longitude   year    subreg  dot_size
date                        
1984-08-05  1985-12     24.033333   59.916667   1984    62  80
1984-08-02  1985-11     22.316667   91.716667   1984    62  80
1984-07-30  1985-10     6.266667    3.183333    1984    62  80
1984-05-12  1985-9  1.816667    3.200000    1984    93  80
1983-04-10  1985-8  6.983333    -58.033333  1983    93  80
1983-03-02  1985-7  4.133333    6.950000    1983    57  80
1981-04-10  1985-1  13.500000   42.716667   1981    22  80
1980-02-13  1985-5  16.541667   111.241667  1980    51  80

我使用 Plotly express 在 scatter_geo 上绘制的

subreg = df['subreg']
px.scatter_geo(df, lat=df['Latitude'], lon=df['Longitude'], color='subreg', height=600)

但我发现这些点太小而无法有效阅读,尤其是地图白色部分上的四个黄点。

在此处输入图像描述

我尝试了一些技巧来改变大小,例如df['dot_size'] = 80它们取得了一些成功,因为它们更大但我似乎只能选择无点(dotsize = 0)小点(大小未作为参数传递)或巨大dot (dotsize >=1),没有其他可用选项。

在此处输入图像描述

Plotly Express scatter_geo 文档尽可能地指出了这一点:

size (str or int or Series or array-like) -- data_frame 中列的名称,或者 pandas Series 或 array_like 对象。此列或 array_like 中的值用于分配标记大小。

关于控制点的大小,我缺少什么?另外,如何有效地设置颜色?

4

2 回答 2

3

切换到的替代方法是在从 生成它之后go.Scattergeo()进行修改。这对我有用:figpx.scatter_geo()

import pandas as pd
import plotly.express as px

df = pd.DataFrame(dict(lat=[24, 22], lon=[60, 92], subreg=[62, 93]))
fig = px.scatter_geo(df, lat="lat", lon="lon", color="subreg")
fig.update_traces(marker=dict(size=50))
fig.show()

它看起来像这样:

在此处输入图像描述

于 2021-03-08T15:57:37.673 回答
3

据我所知, px.scatter_geo 中的colorandsize参数只会采用列的名称,然后使用该数据来设置大小或颜色。因此,如果您将“subreq”传递给颜色或大小,它将使颜色和大小取决于数据框中的该列。

如果您想要更多控制权,我建议您使用 plotly.graph_objects 。你可以做类似的事情

import plotly.graph_objects as go

fig = go.Figure(go.Scattergeo(
    lat=df['Latitude'],
    lon=df['Longitude'],
    marker=dict(color=list(range(6)),
                colorscale='viridis',
                size=50)
))
fig.show()

这样,您可以将大小/颜色设置为常数(例如,设置 size=50),或将其设置为列表,每个点一个。Plotly 将颜色解释为一个范围,实际颜色由色标确定,请参见此处。希望有帮助

于 2020-09-14T02:57:41.713 回答