使用matplotlib在3d中绘制平面

时间:2020-01-14 20:20:10

标签: matplotlib

我正在尝试在3d环境中的matplotlib中绘制一个填充的表面(正方形)。从字面上看是一个立方体。但是我很难使用z坐标的值。如何绘制与轴垂直的正方形?我正在尝试使用plot_surface。这是我到目前为止的代码:

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.gca(projection='3d')

X = list(np.linspace(-4, 4, 100))
Y = list(np.linspace(-4, 4, 100))
X, Y = np.meshgrid(X, Y)
Z = np.sin((X**2 + Y**2)/4)
ax.plot_surface(X, Y, Z, rstride=8, cstride=8, alpha=0.3)

ax.set_xlabel('X')
# ax.set_xlim(-40, 40)
ax.set_ylabel('Y')
# ax.set_ylim(-40, 40)
ax.set_zlabel('Z')
# ax.set_zlim(-100, 100)

plt.show()

更新:我正在3D环境中绘制正方形,但它是线框,但我无法填充它。可以在正方形中显示imshow吗?我只希望能够在任何位置(x,y,z)绘制一个正方形。

import matplotlib.pyplot as plt
import numpy as np
from itertools import product, combinations


fig = plt.figure()
ax = fig.gca(projection='3d')
# ax.set_aspect("equal")

# draw cube
x = [-1, 1]
y = [ 1, 1]
z = [-1, 1]
for s, e in combinations(np.array(list(product(x, y, z))), 2):
    if np.sum(np.abs(s-e)) == x[1]-x[0]:
        ax.plot3D(*zip(s, e), color="b")

ax.set_xlabel('X')
# ax.set_xlim(-40, 40)
ax.set_ylabel('Y')
# ax.set_ylim(-40, 40)
ax.set_zlabel('Z')
# ax.set_zlim(-100, 100)
plt.show()

1 个答案:

答案 0 :(得分:0)

遵循此stack question上的示例:

  private A<T,?> myA;

enter image description here