代码实现可视化两组数据,当两点之间的距离很小时,两点互相靠近,当两点距离大时,则不再互相吸引
时间: 2024-02-17 20:34:13 浏览: 10
以下是Python实现的示例代码:
```python
import matplotlib.pyplot as plt
import numpy as np
# 生成两组数据
x1 = np.random.normal(loc=0, scale=1, size=100)
y1 = np.random.normal(loc=0, scale=1, size=100)
x2 = np.random.normal(loc=5, scale=1, size=100)
y2 = np.random.normal(loc=5, scale=1, size=100)
# 绘制初始状态的散点图
plt.scatter(x1, y1, color='r')
plt.scatter(x2, y2, color='b')
plt.show()
# 开始模拟数据点之间的吸引和排斥
for i in range(1000):
for j in range(100):
# 计算两点之间的距离
dist = np.sqrt((x1[j]-x2)**2 + (y1[j]-y2)**2)
# 如果距离小于一定阈值,则让两点互相靠近
if dist.min() < 2:
x1[j] = x1[j] - 0.1*(x1[j]-x2[np.argmin(dist)])
y1[j] = y1[j] - 0.1*(y1[j]-y2[np.argmin(dist)])
# 如果距离大于一定阈值,则让两点互相排斥
elif dist.min() > 5:
x1[j] = x1[j] + 0.1*(x1[j]-x2[np.argmin(dist)])
y1[j] = y1[j] + 0.1*(y1[j]-y2[np.argmin(dist)])
# 绘制更新后的散点图
plt.scatter(x1, y1, color='r')
plt.scatter(x2, y2, color='b')
plt.show()
```
该代码使用了matplotlib库绘制散点图,并将两组数据分别表示为红色和蓝色的点。在模拟数据点之间的吸引和排斥时,我们使用了一个双重循环,分别遍历两组数据中的每个点,并计算其与另一组数据中所有点之间的距离。如果两点之间的距离小于一定阈值,则让它们互相靠近;如果距离大于一定阈值,则让它们互相排斥。在每次更新数据点位置后,我们使用`plt.show()`函数将图像显示出来,从而实现动态可视化效果。