为什么我的散点图不会旋转?

时间:2015-09-07 10:58:31

标签: python numpy matplotlib rotation

我正在尝试创建一个2d高斯分布并在某种程度上旋转它。

import numpy as np
import matplotlib.pyplot as plt

x = np.random.normal(0, 15, 5000)
y = np.random.normal(0, 3, 5000)

X = np.array([x, y])
print X.shape

angle = 28
theta = np.pi * angle / 180

rotation = np.array([[np.cos(theta), -np.sin(theta)], [np.sin(theta),  np.cos(theta)]])
X1 = np.dot(rotation, X)
print X1.shape

fig = plt.figure(figsize=(16, 8))
fig.add_subplot(2, 1, 1).scatter(x, y)
fig.add_subplot(2, 1, 2).scatter(X1[0], X1[:1])

plt.show()

我期望在这里看到的是高斯的第一个散点图,然后是第二个几乎相同的散点图,但旋转了28度。但相反,我看到了这一点:

enter image description here

1 个答案:

答案 0 :(得分:2)

您在索引X1时的方式错误。

目前,您针对X1[0]绘制X1[:1],但X1[:1]X1[0]相同,正如您所说"第一个维度中的所有索引到1" (即0)。

你只需摆脱冒号 - 即你需要绘制X1[0]X1[1]

这有效:

fig.add_subplot(2, 1, 2).scatter(X1[0], X1[1])

enter image description here