2016-06-30 117 views
3

我正在使用cartopy和matplotlib进行一些绘图,并且我使用同一组点使用每个图像中显示的不同域大小生成一些图像。随着我的域大小变大,每个绘图点的大小都保持不变,所以最终当我缩小时,事情会变得越来越紧密,重叠并且通常很混乱。我想改变点的大小,而且我知道我可以通过再次绘制它们来做到这一点,但我想知道是否有方法可以在不再经过该过程的情况下更改它们的大小。更改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]) 

任何意见将是不胜感激!

回答

0

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') 
+0

我知道s参数,但当您调用最初绘制点的散射函数时会使用该参数。我正在寻找改变点的大小,一旦他们已经被绘制使用分散函数。 –

+0

对不起,我的错误,所以你需要动态更新散点,这将涉及重绘它们。看看这篇文章的更多见解http://stackoverflow.com/questions/10944621/dynamically-updating-plot-in-matplotlib – Alastair

2

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) 

enter image description here enter image description here