【问题标题】:Changing size of scattered points in matplotlib更改 matplotlib 中散点的大小
【发布时间】:2016-06-30 17:54:29
【问题描述】:

我正在使用 cartopy 和 matplotlib 进行一些绘图,并且我正在使用相同的一组点生成一些图像,每个图像中显示的域大小不同。随着我的域大小变大,每个绘制点的大小保持固定,所以最终当我缩小时,事情会变得混乱、重叠,而且通常是混乱的。我想改变点的大小,我知道我可以通过再次绘制它们来做到这一点,但我想知道是否有一种方法可以改变它们的大小而无需再次执行该过程。

这是我用来绘制点的线:

plt.scatter(longs, lats, color = str(platformColors[platform]), zorder = 2, s = 8, marker = 'o')

这是我用来更改域大小的行:

ax.set_extent([lon-offset, lon+offset, lat-offset, lat+offset])

任何建议将不胜感激!

【问题讨论】:

    标签: python matplotlib plot cartopy


    【解决方案1】:

    scatter 具有选项set_sizes,您可以使用它来设置新的大小。例如:

    import matplotlib.pylab as pl
    import numpy as np
    
    x = np.random.random(10)
    y = np.random.random(10)
    s = np.random.random(10)*100
    
    pl.figure()
    l=pl.scatter(x,y,s=s)
    
    s = np.random.random(10)*100
    l.set_sizes(s)
    

    似乎set_sizes 只接受数组,因此对于恒定的标记大小,您可以执行以下操作:

    l.set_sizes(np.ones(x.size)*100)
    

    或者相对变化,比如:

    l.set_sizes(l.get_sizes()*2)
    

    【讨论】:

      【解决方案2】:

      http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.scatter

      这些是 plt.scatter 采用的参数,s 参数是散点的大小,因此将 s 更改为您喜欢的任何值,就像这样

      plt.scatter(longs, lats, color = str(platformColors[platform]), zorder = 2, s = 20, marker = 'o')
      

      【讨论】:

      • 我知道 s 参数,但是当您调用最初绘制点的 scatter 函数时会使用该参数。我希望在使用 scatter 函数绘制点后更改点的大小。
      • 好吧对不起我的错误,所以你需要动态更新散点,这将涉及重绘它们。查看这篇文章以了解更多信息stackoverflow.com/questions/10944621/…
      猜你喜欢
      • 1970-01-01
      • 2017-02-18
      • 2015-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多