在 Plotly 散点地图中添加注释

6

我在为我的Plotly散点地理图添加注释时遇到了问题。我使用的数据源是一个Pandas数据框,其中包含列“Lat”、“Long”,并将索引作为文本。我生成的注释参数位于布局参数下的嵌套结构中,如下所示:

[dict(x= d[1]['Lat'], y= d[1]['Long'], text= d[0]) for d in df.iterrows()]

相反,我可以只使用一行注释(甚至为测试目的硬编码值)。似乎x、y位置是使用图表网格而不是地图网格来放置注释的。是否有参数可以修复这个问题,或者我需要调整图表网格本身?提前致谢。
编辑:这里有一个例子。我希望通过将纬度/经度坐标作为注释的x、y变量来使注释位于每个气泡旁边。

plotly map example

1个回答

1
您可以尝试类似于 that 的东西:
import plotly.plotly as py
import plotly.graph_objs as go

fig = go.Figure(
    data=[
        go.Scattergeo(
            lat=[45.5,43.4,49.13,51.1,53.34,45.24,44.64,48.25,49.89,50.45],
            lon=[-73.57,-79.24,-123.06,-114.1,-113.28,-75.43,-63.57,-123.21,-97.13,-104.6],
            marker={
                "color": ["#bebada","#fdb462","#fb8072","#d9d9d9","#bc80bd","#b3de69","#8dd3c7","#80b1d3","#fccde5","#ffffb3"],
                "line": {
                    "width": 1
                },
                "size": 10
            },
            mode="markers+text",
            name="",
            text=["Montreal","Toronto","Vancouver","Calgary","Edmonton","Ottawa","Halifax","Victoria","Winnepeg","Regina"],
            textfont={
                "color": ["#bebada","#fdb462","#fb8072","#d9d9d9","#bc80bd","#b3de69","#8dd3c7","#80b1d3","#fccde5","#ffffb3"],
                "family": ["Arial, sans-serif","Balto, sans-serif","Courier New, monospace","Droid Sans, sans-serif","Droid Serif, serif","Droid Sans Mono, sans-serif","Gravitas One, cursive","Old Standard TT, serif","Open Sans, sans-serif","PT Sans Narrow, sans-serif","Raleway, sans-serif","Times New Roman, Times, serif"],
                "size": [22,21,20,19,18,17,16,15,14,13]
            },
            textposition=["top center","middle left","top center","bottom center","top right","middle left","bottom right","bottom left","top right","top right"]
        )
    ],
    layout={
        "title": "Canadian cities",
        "geo": {
            "lataxis": {
                "range": [40, 70]
            },
            "lonaxis": {
                "range": [-130, -55]
            },
            "scope": "north america"
        }
    }
)

plot_url = py.plot(fig, filename='Canadian Cities')

抱歉,您没有提供要翻译的英文文本。请提供文本以便我能够为您提供帮助。
import pandas as pd

# initial position
lat = 47.8388
lon = 35.1396

# generate random coordinates
df = pd.DataFrame({'lat': lat + np.random.normal(1,0.2,10),'lon': lon + np.random.normal(1,0.2,10)})
df = df.round(4)

pd.options.display.float_format = '{:.4f}'.format
df['text'] = df.lat.astype(str) + ', ' + df.lon.astype(str)
print(df)

ax = df.plot(x='lat', y='lon', kind='scatter')

y_shift = (df.lon.max()-df.lon.min())/len(df)
[ax.annotate(tup[2], xy=tup[:2], xytext=(tup[0], tup[1]))
 for tup in df.itertuples(index=False)]

plt.show()

我把坐标作为注释的文本放置...

Plot


我希望能够在Plotly地图上绘制注释,而不是普通的网格。编辑了我的问题并添加了图片,试图使其更清晰明了。 - fishball
@fishball,抱歉我没有注意到。也许你可以提供一些样本数据集,这样那些愿意帮忙的人就可以试一试(测试它)? - MaxU - stand with Ukraine

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接