【问题标题】:How to plot intervals in a cartopy map?如何在地图上绘制间隔?
【发布时间】:2021-09-07 15:02:37
【问题描述】:

我有这个 df:

     CODE      STATION     LATITUDE   LONGITUDE  INTERVAL
0    109014   BUENA VISTA  -9.433706 -78.208250  [25, 30)
1    111022        HUAYAN -11.452808 -77.122006  [25, 30)
2    111023          ムAムA -11.987444 -76.841944  [25, 30)
3    112058       PACARAN -12.866892 -76.057928  [25, 30)
4    111004  ALCANTARILLA -11.060681 -77.550106  [20, 25)
..      ...           ...        ...        ...       ...
264  114050        ANANEA -14.676278 -69.533855  [15, 20)
265  113100  VILCASHUAMAN -13.668877 -73.952427  [15, 20)
266  113101     CHILCAYOC -13.882978 -73.726799  [15, 20)
267  114093        PUTINA -14.921000 -69.875700  [15, 20)
268  114096     CUYO CUYO -14.488841 -69.550035  [15, 20)

区间列是分类类型。

我想根据不同标记的间隔在地图中绘制点。

对于区间 [25,30) 一个红色三角形,对于区间 [20,25) 一个绿色正方形等。所以我正在尝试这段代码:

fig = plt.figure('map', figsize=(7,7), dpi=200)
ax = fig.add_axes([0.1, 0.12, 0.80, 0.75], projection=ccrs.PlateCarree())

plt.xlabel('LONGITUD') 
plt.ylabel('LATITUD') 

l1 = NaturalEarthFeature(category='cultural', name='admin_0_countries', scale='50m', facecolor='none')
ax.add_feature(l1, edgecolor='black', linewidth=0.1)


img1 = ax.scatter(df.LONGITUDE, df.LATITUDE, s=6,c=df.INTERVAL,
                 marker='o',cmap='RdYlGn_r', transform=ccrs.PlateCarree())

我只是在绘制 1 个标记,我也收到了这个错误:

TypeError: float() argument must be a string or a number, not 'pandas._libs.interval.Interval'

你愿意帮我吗?

提前致谢。

【问题讨论】:

  • 有情节的回答可以接受吗?
  • 我需要在地图上做,srry
  • ok - fig = px.scatter_mapbox(df, lat="LATITUDE", lon="LONGITUDE", color="INTERVAL") fig.update_layout(mapbox_style="open-street-map") 会为你生成不同的颜色标记,用于 plotly 的区间

标签: python pandas cartopy


【解决方案1】:

你应该给 c 一个颜色相关的信息而不是一个分类类型。

【讨论】:

    猜你喜欢
    • 2018-05-09
    • 2021-07-06
    • 2019-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    相关资源
    最近更新 更多