我想在散点图上绘制一些随机生成的磁盘的位置,然后查看磁盘是否已连接到'对彼此。为此,我需要设置固定/链接到轴刻度的每个磁盘的半径
's'
函数中的plt.scatter
参数使用点,因此相对于轴的大小不固定。如果我动态缩放到绘图中,散点图标的大小在绘图上保持不变,并且不会随轴放大
如何设置半径以使它们具有一定的值(相对于轴)?
答案 0 :(得分:5)
我建议使用patches.Circle
绘制图表(类似于this answer),而不是使用plt.scatter
。这些修补程序的大小保持不变,因此您可以动态放大以检查连接':
import matplotlib.pyplot as plt
from matplotlib.patches import Circle # for simplified usage, import this patch
# set up some x,y coordinates and radii
x = [1.0, 2.0, 4.0]
y = [1.0, 2.0, 2.0]
r = [1/(2.0**0.5), 1/(2.0**0.5), 0.25]
fig = plt.figure()
# initialize axis, important: set the aspect ratio to equal
ax = fig.add_subplot(111, aspect='equal')
# define axis limits for all patches to show
ax.axis([min(x)-1., max(x)+1., min(y)-1., max(y)+1.])
# loop through all triplets of x-,y-coordinates and radius and
# plot a circle for each:
for x, y, r in zip(x, y, r):
ax.add_artist(Circle(xy=(x, y),
radius=r))
plt.show()
这个生成的情节如下所示:
使用绘图窗口中的缩放选项,可以获得这样的图:
这个放大版本保留了原始的圆圈大小,因此连接'看得见。
如果您想将圈子更改为透明,patches.Circle
会将alpha
作为参数。只需确保通过调用Circle
而不是add_artist
ax.add_artist(Circle(xy=(x, y),
radius=r,
alpha=0.5))