我的散点图是fluent计算得到的颗粒在三维空间的坐标分布,使用了view_init(elev,azim)后,输出的图片仅旋转了坐标轴,并未将颗粒的坐标与旋转后的坐标轴相对应
时间: 2024-03-24 07:41:24 浏览: 66
在使用`view_init`方法设置视角时,确实只是旋转了坐标轴,并没有旋转实际数据的坐标。因此,你需要在设置视角之后,手动将散点数据进行相应的旋转,以使其与旋转后的坐标轴相对应。
具体来说,你可以使用`rotate`方法来对散点数据进行旋转。该方法可以接受三个参数,分别表示绕x轴、y轴和z轴旋转的角度。例如,如果你希望将数据绕z轴顺时针旋转30度,可以将代码修改为如下所示:
```python
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
# 生成随机数据
x = np.random.normal(size=100)
y = np.random.normal(size=100)
z = np.random.normal(size=100)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 绘制散点图
ax.scatter(x, y, z)
# 设置视角
ax.view_init(elev=30, azim=30)
# 将数据绕z轴旋转30度
theta = np.radians(30)
c, s = np.cos(theta), np.sin(theta)
x_new = x * c - y * s
y_new = x * s + y * c
# 更新散点数据
ax.collections[0]._offsets3d = (x_new, y_new, z)
plt.show()
```
在上述代码中,我们首先将数据绘制成散点图,并使用`view_init`方法将视角设置为`elev=30`、`azim=30`。然后,我们将数据绕z轴顺时针旋转30度,并更新散点数据。最后,我们调用`plt.show()`方法将图形显示出来。你可以根据需要调整旋转角度和旋转轴,以使数据与坐标轴相对应。
阅读全文