pylab.scatter
函數根據點數^ 2中的大小獲取值大小。這個大小將獨立於座標軸,散點圖的本質也是如此(如果您在散點圖中的某個區域上縮小點數,則大小無關緊要)。
如果你想說畫圈圈是一個給定的尺寸,你應該在pylab
import pylab
axes = pylab.axes()
circle1 = pylab.Circle((0,0), radius=20, alpha=.5)
circle2 = pylab.Circle((0.5,0.5), radius=20, alpha=.5)
axes.add_patch(circle1)
axes.add_patch(circle2)
pylab.axis('scaled')
pylab.show()
使用循環命令。如果您需要與散點圖類似能力的東西,你可以不喜歡
import pylab
import matplotlib
def my_circle_scatter(axes, x_array, y_array, radius=0.5, **kwargs):
for x, y in zip(x_array, y_array):
circle = pylab.Circle((x,y), radius=radius, **kwargs)
axes.add_patch(circle)
return True
def my_square_scatter(axes, x_array, y_array, size=0.5, **kwargs):
size = float(size)
for x, y in zip(x_array, y_array):
square = pylab.Rectangle((x-size/2,y-size/2), size, size, **kwargs)
axes.add_patch(square)
return True
def my_polygon_scatter(axes, x_array, y_array, resolution=5, radius=0.5, **kwargs):
''' resolution is number of sides of polygon '''
for x, y in zip(x_array, y_array):
polygon = matplotlib.patches.CirclePolygon((x,y), radius=radius, resolution=resolution, **kwargs)
axes.add_patch(polygon)
return True
axes=pylab.axes()
my_circle_scatter(axes, [0,0.5], [0,0.5], radius=2, alpha=.5, color='b')
my_square_scatter(axes, [-3,-4,2,3], [1,-3,0,3], size=.5, alpha=.5, color='r')
my_polygon_scatter(axes, [-1,-2,3], [-3,0,3], radius=.5, resolution=3, alpha=.5, color='g')
my_polygon_scatter(axes, [4,1.5,3], [2,-1,-3], radius=.5, resolution=5, alpha=.5, color='k')
pylab.axis('scaled')
pylab.axis([-5,5,-5,5])
pylab.show()
請參閱http://matplotlib.sourceforge.net/api/artist_api.html#module-matplotlib.patches其他可繪製對象。從第一個片段
輸出樣本:
編輯格里夫:從第二片段輸出
樣品如果你要處理的每個點不同的半徑,你可以做一些簡單的像:
def my_circle_scatter_radii(axes, x_array, y_array, radii_array, **kwargs):
for (x, y, r) in zip(x_array, y_array, radii_array):
circle = pylab.Circle((x,y), radius=r, **kwargs)
axes.add_patch(circle)
return True
同時處理兩種情況下的邏輯也是簡單的(例如,檢查是否它的一個radii_array是int/float,如果是這樣,使其成爲一個數組)。
你如何與不同半徑的每個點的數組做到這一點?它不接受'radius ='參數中的數組。 – Griff 2013-03-05 14:57:07