我正在嘗試在顯示的影像表面上方繪制帶有繪制線條的圖形,但是繪制的任何線條都出現在影像下方。我正在使用下面plot_surface的示例函式來顯示影像display_image_on_z_plane。這里應該有一條橫過 X 軸的線。
編輯:我嘗試在繪制線條之前/之后撥打電話。使用 Matplotlib 3.5.0。在表面上方繪制表面似乎作業正常,ala 
import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np
import cv2
def display_image_on_z_plane(image, ax, z_level):
step_x, step_y = 10. / image.shape[0], 10. / image.shape[1]
bg_X = np.arange(-5., 5., step_x)
bg_Y = np.arange(-5., 5., step_y)
bg_X, bg_Y = np.meshgrid(bg_X, bg_Y)
ax.plot_surface(bg_X, bg_Y, np.atleast_2d(z_level), rstride=2, cstride=2, facecolors=image, shade=False)
fig = plt.figure()
ax = plt.axes(projection='3d')
# Display Random Graph
X = [-5, 5]
Y = [0, 0]
Z = [0, 0]
ax.plot(X, Y, Z)
image = cv2.imread("Lenna_(test_image).png")
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
image = image.astype(np.float32) / 255.0
image = cv2.flip(image, 0)
display_image_on_z_plane(image, ax, -0.01)
ax.set_zlim(-0.05, 0.3)
plt.show()
uj5u.com熱心網友回復:
顯然這是由于 Matplotlib 的作業方式。您必須手動指定 z 順序。
這是我更新的代碼示例:
import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np
import cv2
def display_image_on_z_plane(image, ax, z_level):
step_x, step_y = 10. / image.shape[0], 10. / image.shape[1]
bg_X = np.arange(-5., 5., step_x)
bg_Y = np.arange(-5., 5., step_y)
bg_X, bg_Y = np.meshgrid(bg_X, bg_Y)
ax.plot_surface(bg_X, bg_Y, np.atleast_2d(z_level), rstride=2, cstride=2, facecolors=image, shade=False, zorder=0)
fig = plt.figure()
ax = plt.axes(projection='3d')
image = cv2.imread("Lenna_(test_image).png")
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
image = image.astype(np.float32) / 255.0
image = cv2.flip(image, 0)
display_image_on_z_plane(image, ax, -0.01)
# Display Random Graph
X = [-5, 5]
Y = [0, 0]
Z = [0, 0]
ax.plot(X, Y, Z, zorder=10)
ax.set_zlim(-0.05, 0.3)
plt.show()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/371886.html
標籤:Python matplotlib
上一篇: 不支持的運算元型別:“int”和“datetime.timedelta”
下一篇:如何正確設定此優化模型的影片
