0
我想繪製一個特定的遊覽項目,其中一些特定的邊和節點突出顯示。爲了做到這一點,我首先使用plot_surface
命令繪製圓環,然後使用plot_wireframe
來突出顯示特定的邊和節點。所以,這裏是我的代碼:如何在pyplot plot_surface中隱藏圖的某些部分以獲得更好的python圖形?
from mpl_toolkits.mplot3d import Axes3D
from mpl_toolkits.mplot3d import *
import matplotlib.pyplot as plt
import numpy as np
from random import random, seed
from matplotlib import cm
from matplotlib import colors
import matplotlib as mpl
# mpl.rcParams['lines.linewidth'] = 5
plt.hold(True)
n = 30
theta = np.linspace(0, 2.*np.pi, n)
phi = np.linspace(0, 2.*np.pi, n)
theta, phi = np.meshgrid(theta, phi)
c, a = 2, 1
x = (c + a*np.cos(theta)) * np.cos(phi)
y = (c + a*np.cos(theta)) * np.sin(phi)
z = a * np.sin(theta)
fig = plt.figure()
ax1 = fig.add_subplot(111, projection='3d')
ax1.set_zlim(-2,2)
ax1.scatter(x,y,z+0.001,color="black",s=1,marker='o')
for i in range(n):
if(i%3==0):
color='yellowgreen'
elif(i%3==1):
color="silver"
else:
color="cyan"
ax1.plot_surface(x[i:i+2], y[i:i+2], z[i:i+2], rstride=3, cstride=1, edgecolors=color,color=color,alpha=0.4,shade=False)
ax1.plot_wireframe(x, y, z,rstride=3, cstride=1,color='r',alpha=0.4)
ax1.view_init(36, 26)
plt.show()
這是數字我得到:
正如你所看到的,我的形象後面的部分是可見的,當你從前面截圖中看到它這使得數字不太清晰。我想讓它的後面部分在任何方向上都不可見。換句話說,我希望得到某物類似這樣的圖片(我用我的第一個圖像上的Photoshop得到這一個,但我想我的代碼自動爲我做到這一點):
我如果有人能夠幫助我解決這個問題,我將非常感激。
答案是不正確的。我不知道你是否已經測試了你的答案,但是我剛剛檢查過它沒有任何影響。 – Infintyyy
您是否也將線框alpha設置爲1?我相信你沒有。你的陰謀清楚地顯示半透明 –
對不起,現在檢查它,你必須從你的線框生成一個表面並填充它,你不能設置半透明線框。 –