问题描述
我有一个示例数据集(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)小点(大小未作为参数传递)或大点(点大小> = 1),没有其他可用选项。
情节快速scatter_geo documentation指出了这一点:
size(str或int或Series或类数组)– data_frame中的列名称,或pandas Series或array_like对象。此列或array_like中的值用于分配标记大小。
关于控制点的大小我缺少什么?另外,如何有效设置颜色?
解决方法
据我所知,px.scatter_geo中的color
和size
参数只会采用一列的名称,然后使用该数据来设置大小或颜色。因此,如果将'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()
看起来像这样: