我正在尝试为我的项目绘制特定的游览,其中一些特定的边和节点被突出显示。为了做到这一点,我使用第一个plot_surface
命令绘制圆环,然后使用plot_wireframe
突出显示特定的边和节点。所以,这是我的代码:
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来获取这个,但我想让我的代码自动为我做这些):
如果有人能帮我解决这个问题,我真的很感激。
答案 0 :(得分:0)
为什么不将半透明度值设置为“1”?
替换
alpha=0.4
与
alpha=1
中的
ax1.plot_surface