如何为每个点散点图绘制一个圆,同时每个散点图都有特定的半径大小
How to plot a circle for each point scatter plot while each has particular radius size
我有一个带有距离矩阵的 pandas 帧,我使用 PCA 来减少暗淡。这个距离矩阵的数据框有每个点的标签和大小。
如何让每个散点变成一个圆,其大小取决于数据框的大小
````
pca = PCA(n_components=2)
pca.fit(dist)
mds5 = pca.components_
fig = go.Figure()
fig.add_scatter(x = mds5[0],
y = mds5[1],
mode = 'markers+text',
marker= dict(size = 8,
color= 'blue'
),
text= dist.columns.values,
textposition='top right')
````
我需要让散点图看起来像这个例子,但是,当我在相关答案中添加每个点的大小时,我无法让圆圈重叠,当它们重叠时,我可以放大,然后它们不再重叠
听起来很奇怪,但我需要创建一个逻辑,如果两个圆重叠,半径较小的圆会消失,所以:
- 如何在不考虑缩放的情况下保持圆圈大小相同
- 如何在python中创建逻辑来取消较小的重叠圆圈?
我仍然不确定你想在圆圈大小中反映哪个 PCA 参数,但是:要么你想
- 使用散点图(即
ax.scatter()
),其 size=
反映了您选择的 PCA 参数;当您重新缩放图形时,此尺寸将(不应该)重新缩放;它也是 未给出 (x,y)-units
- 使用多个
plt.Circle((x,y), radius=radius, **kwargs)
块,其半径以 (x,y) 为单位;然后点重叠在重新缩放时一致,但这可能会导致变形点
下面的动画将强调手头的问题:
我想你想要基于 plt.Circle
的解决方案,因为它保持距离 static,然后你需要 "manually" 预先计算是否两个点重叠并删除它们 "manually"。您应该能够通过比较点大小(即 radius
,您的 PCA 参数)和数据点之间的欧几里德距离(即 np.sqrt(dx**2 + dy**2)
)自动执行此操作。
要使用 Circles,您可以例如定义一个 shorthand 函数:
def my_circle_scatter(ax, x_array, y_array, radius=0.5, **kwargs):
for x, y in zip(x_array, y_array):
circle = plt.Circle((x,y), radius=radius, **kwargs)
ax.add_patch(circle)
return True
然后使用可选参数(即 x 和 y 坐标、颜色等)调用它:
my_circle_scatter(ax, xs, ys, radius=0.2, alpha=.5, color='b')
我使用 fig,ax=plt.subplots()
单独创建图形和子图的地方。
我有一个带有距离矩阵的 pandas 帧,我使用 PCA 来减少暗淡。这个距离矩阵的数据框有每个点的标签和大小。
如何让每个散点变成一个圆,其大小取决于数据框的大小
````
pca = PCA(n_components=2)
pca.fit(dist)
mds5 = pca.components_
fig = go.Figure()
fig.add_scatter(x = mds5[0],
y = mds5[1],
mode = 'markers+text',
marker= dict(size = 8,
color= 'blue'
),
text= dist.columns.values,
textposition='top right')
````
我需要让散点图看起来像这个例子,但是,当我在相关答案中添加每个点的大小时,我无法让圆圈重叠,当它们重叠时,我可以放大,然后它们不再重叠
听起来很奇怪,但我需要创建一个逻辑,如果两个圆重叠,半径较小的圆会消失,所以:
- 如何在不考虑缩放的情况下保持圆圈大小相同
- 如何在python中创建逻辑来取消较小的重叠圆圈?
我仍然不确定你想在圆圈大小中反映哪个 PCA 参数,但是:要么你想
- 使用散点图(即
ax.scatter()
),其size=
反映了您选择的 PCA 参数;当您重新缩放图形时,此尺寸将(不应该)重新缩放;它也是 未给出 (x,y)-units - 使用多个
plt.Circle((x,y), radius=radius, **kwargs)
块,其半径以 (x,y) 为单位;然后点重叠在重新缩放时一致,但这可能会导致变形点
下面的动画将强调手头的问题:
我想你想要基于 plt.Circle
的解决方案,因为它保持距离 static,然后你需要 "manually" 预先计算是否两个点重叠并删除它们 "manually"。您应该能够通过比较点大小(即 radius
,您的 PCA 参数)和数据点之间的欧几里德距离(即 np.sqrt(dx**2 + dy**2)
)自动执行此操作。
要使用 Circles,您可以例如定义一个 shorthand 函数:
def my_circle_scatter(ax, x_array, y_array, radius=0.5, **kwargs):
for x, y in zip(x_array, y_array):
circle = plt.Circle((x,y), radius=radius, **kwargs)
ax.add_patch(circle)
return True
然后使用可选参数(即 x 和 y 坐标、颜色等)调用它:
my_circle_scatter(ax, xs, ys, radius=0.2, alpha=.5, color='b')
我使用 fig,ax=plt.subplots()
单独创建图形和子图的地方。