如何为绘图表达scatter_geo设置点大小和颜色?

问题描述

我有一个示例数据集(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)

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

enter image description here

我曾尝试过多种修改大小的方法,例如df['dot_size'] = 80,但由于其尺寸较大,因此取得了一些成功,但我似乎只能选择不使用点(dotsize = 0)小点(大小未作为参数传递)或大点(点大小> = 1),没有其他可用选项。

enter image description here

情节快速scatter_geo documentation指出了这一点:

size(str或int或Series或类数组)– data_frame中的列名称,或pandas Series或array_like对象。此列或array_like中的值用于分配标记大小。

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

解决方法

据我所知,px.scatter_geo中的colorsize参数只会采用一列的名称,然后使用该数据来设置大小或颜色。因此,如果将'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()

这样,您可以将尺寸/颜色设置为常数(例如,设置尺寸= 50),或将其设置为列表,每个点一个。将颜色绘制为一个范围,实际颜色由色标确定,请参见here。希望有帮助

,

切换到 go.Scattergeo() 的替代方法是在从 fig 生成后修改 px.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()

看起来像这样:

enter image description here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...