我一直在尝试使用 Plotly 在地图上绘制纬度线,但没有成功。我设法将事情归结为一个简单的例子,我认为它会沿着一条纬线绘制两条线段,但在不同的经度处开始和停止。我在 Jupyter Notebook 中使用的代码如下:
from plotly.offline import iplot
# First latitude line
data_dict3 = {'type': 'scattergeo',
'lat': [48,48],
'lon': [-130,-60],
'marker': {'size': 5,
'color': 'rgb(250, 250, 10)'
},
'mode': 'lines'
}
# Second latitude line
data_dict4 = {'type': 'scattergeo',
'lat': [48,48],
'lon': [-170,-100],
'marker': {'size': 5,
'color': 'rgb(10, 160, 0)'
},
'mode': 'lines'
}
# Map parameters
geo_dict = {'showframe': True,
'framewidth': 25,
'scope': 'north america',
'showland': True,
'landcolor': "rgb(212, 212, 212)",
'showocean': True,
'oceancolor': "rgb(180, 180, 225)",
'showlakes': True,
'lakecolor': "rgb(180, 180, 225)",
'subunitcolor': "rgb(0,0,0)",
'resolution': 50}
# Layout Dict
layout_dict = {'geo': geo_dict}
# Dicts defining figure
fig = {'data':[data_dict3, data_dict4],
'layout':layout_dict}
iplot(fig)
我预计会看到一条沿 48 度纬线的线,其西侧为绿色,东侧为黄色。可能它会有第三种颜色,其中绿线和黄线重叠。相反,我看到了这个:
为什么绿线和黄线不在同一纬度?
我不确定为什么会发生这种情况,但看起来线的曲率会根据其长度而变化。看起来一种可能的解决方法是增加每条轨迹的起始纬度和结束纬度之间的点数。例如:
# from plotly.offline import iplot
import numpy as np
import plotly.graph_objects as go
n = 100
# First latitude line
data_dict3 = {'type': 'scattergeo',
'lat': np.repeat(48,n),
'lon': np.linspace(-130,-60,n),
'marker': {'size': 5,
'color': 'rgb(250, 250, 10)'
},
'mode': 'lines'
}
# Second latitude line
data_dict4 = {'type': 'scattergeo',
'lat': np.repeat(48,n),
# 'lon': [-170,-100],
'lon': np.linspace(-170,-100,n),
'marker': {'size': 5,
'color': 'rgb(10, 160, 0)'
},
'mode': 'lines'
}
# Map parameters
geo_dict = {'showframe': True,
'framewidth': 25,
'scope': 'north america',
'showland': True,
'landcolor': "rgb(212, 212, 212)",
'showocean': True,
'oceancolor': "rgb(180, 180, 225)",
'showlakes': True,
'lakecolor': "rgb(180, 180, 225)",
'subunitcolor': "rgb(0,0,0)",
'resolution': 50}
# Layout Dict
layout_dict = {'geo': geo_dict}
# Dicts defining figure
fig = go.Figure({'data':[data_dict3, data_dict4],
'layout':layout_dict})
fig.show()