【问题标题】:Different plot size on Basemap底图上不同的地块大小
【发布时间】:2015-06-10 22:42:22
【问题描述】:

我目前正在使用底图来绘制一些数据。我希望标记大小由列表定义,但这会引发错误。

知道如何使用单个函数或方法调用来显示不同大小的标记吗?

m = Basemap(projection='mill',llcrnrlat=51.25,urcrnrlat=51.75,
            llcrnrlon=-0.5,urcrnrlon=0.3,resolution='h')
m.drawcoastlines()
m.drawrivers(color='blue')
m.fillcontinents()
m.drawmapboundary()
m.drawcounties()

lat,lon,size = [51.5, 51.4], [0.1, 0], [2, 35]
x, y = m(lon,lat)
m.plot(lon, lat,'ro',markersize=size)

plt.show()

【问题讨论】:

    标签: python matplotlib matplotlib-basemap


    【解决方案1】:

    Basemap.plt 不支持多个标记大小。请改用 Basemap.scatter 及其大小参数。
    如果要同时保留线条和标记,则必须将plotscatter 结合起来:

    import matplotlib.pyplot as plt
    from mpl_toolkits.basemap import Basemap
    
    m = Basemap(projection='mill',llcrnrlat=51.25,urcrnrlat=51.75,
            llcrnrlon=-0.5,urcrnrlon=0.3,resolution='h')
    m.drawcoastlines()
    m.drawrivers(color='blue')
    m.fillcontinents()
    m.drawmapboundary()
    m.drawcounties()
    
    lat,lon,size = [51.5,51.4],[0.1,0],[2,35]
    x,y = m(lon,lat)
    m.plot(x, y, c='r')
    m.scatter(x, y, s=size, c='r', marker='o', zorder=2)
    
    plt.show()
    

    【讨论】:

      【解决方案2】:

      您正在转发列表而不是标记大小的值。 size=[2,35],试试 size[0]

      【讨论】:

      • 这就是它的全部意义所在。我希望情节有不同的大小。那么如何在不转发列表的情况下做到这一点呢?我确实有一个非常不雅的解决方案,但我很确定,我们可以找到一种 Python 的方式来做到这一点。
      • OP 需要两种不同的标记大小。 plt.scatter 是解决方案。
      猜你喜欢
      • 1970-01-01
      • 2015-06-14
      • 1970-01-01
      • 1970-01-01
      • 2012-01-12
      • 1970-01-01
      • 2017-06-05
      • 2014-08-29
      • 2020-11-14
      相关资源
      最近更新 更多