Plotly:在地图上绘制点和线时自动进入/退出到合适的区域
Posted
技术标签:
【中文标题】Plotly:在地图上绘制点和线时自动进入/退出到合适的区域【英文标题】:Plotly: auto room in/out to the suitable region when plotting points and lines on the map 【发布时间】:2022-01-10 16:15:03 【问题描述】:自动调整显示正确地图范围的正确方法是什么:
这是当前的显示,我几乎看不到绘图的真实部分:
理想的展示方式:
下面是代码。
import plotly.graph_objects as go
import plotly.io as pio
import plotly
lon1 = [113.076843,113.154191,113.737213,113.842405,114.244183]
lat1 = [23.10993,23.218533,23.047626,22.987975,22.601581]
lon2 = [113.364738, 113.664108,113.661705,114.244183]
lat2 = [22.997112,22.878038,22.869216,22.601581]
lon_trip1 = lon1
lat_trip1 = lat1
lon_trip2 = lon2
lat_trip2 = lat2
fig = go.Figure()
fig.add_trace(go.Scattermapbox(
mode="markers+lines",
lon=lon_trip1,
lat=lat_trip1,
name="trip1",
marker='size': 10))
fig.add_trace(go.Scattermapbox(
mode="markers+lines",
lon=lon_trip2,
lat=lat_trip2,
name="trip2",
marker='size': 10))
fig.update_layout(
margin='l': 113, 't': 24, 'b': 22, 'r': 115,
autosize=True,
mapbox=
# 'center': 'lon': 10, 'lat': 10,
# 'autosize'=True,
'style': "stamen-terrain",
# 'center': 'lon': -20, 'lat': -20,
# 'zoom': 1
)
pio.write_image(fig,'C:/Users/user/Desktop/test.png',width=1980, height=1080)
plotly.offline.plot(fig, filename='C:/Users/user/Desktop/plot' + '.html')
fig.show()
【问题讨论】:
【参考方案1】:要在使用地图框时自动设置中心位置,您需要一种特殊的方法。我已经使用official reference 中的示例修改了您的代码。中心的经纬度设置合适,请更正。
import plotly.graph_objects as go
import plotly.io as pio
import plotly
lon1 = [113.076843, 113.154191, 113.737213, 113.842405, 114.244183 ]
lat1 = [23.10993, 23.218533, 23.047626, 22.987975, 22.601581 ]
lon2 = [113.364738, 113.664108, 113.661705,114.244183]
lat2 = [22.997112, 22.878038, 22.869216, 22.601581 ]
lon_trip1 = lon1
lat_trip1 = lat1
lon_trip2 = lon2
lat_trip2 = lat2
fig = go.Figure()
fig.add_trace(go.Scattermapbox(
mode="markers+lines",
lon=lon_trip1,
lat=lat_trip1,
name="trip1", marker='size': 10))
fig.add_trace(
go.Scattermapbox(
mode="markers+lines",
lon=lon_trip2,
lat=lat_trip2,
name="trip2",
marker='size': 10))
fig.update_layout(
margin='l': 113, 't': 24, 'b': 22, 'r': 115,
mapbox=dict(style='carto-positron',
center=go.layout.mapbox.Center(lon=113.664, lat=22.878),
pitch=0,
zoom=8)
)
fig.add_annotation(x=lat2[0],
xref='x',
y=lon2[0],
yref='y',
text="DAZHEN'GANG",
font=dict(color='blue', size=20))
pio.write_image(fig,'./data/plotly_choropleth.png',width=1980, height=1080)
#plotly.offline.plot(fig, filename='C:/Users/user/Desktop/plot' + '.html')
fig.show()
【讨论】:
谢谢。您能否建议如何在每个节点内添加文本?例如像 1,2,3 这样的数字。以及如何将线型设为箭头线 还有,我能不能把地图背景的样式改成类似于Tableau的白灰色呢 可以使用add_annotation()
添加文本。您可以按原样使用纬度和经度,x
,y
作为坐标参考。地图类型可以在样式中更改,所以我将其更改为白灰色。最后,箭头的添加似乎不是地图框散点图的功能。因此,您必须使用 add_annotation()
手动添加它们。
非常感谢。当我移动地图时,似乎 annotation() 不会与节点绑定。我遵循了这个方法:***.com/questions/62240079/… 但是,它似乎根本不起作用。
另外,有没有办法将地图语言自动更改为本地语言,如谷歌地图?再次非常感谢以上是关于Plotly:在地图上绘制点和线时自动进入/退出到合适的区域的主要内容,如果未能解决你的问题,请参考以下文章
点和线之间的最短距离(Google Maps API 问题?)