我试图在python中创建一个没有任何绘图元素的3d图形。有点像是this的3d版本。在
当我运行下面添加的代码时,我得到了正则plot。
我想删除轴、轴标签、记号和背景(只保留在曲面上)。在
我怎样才能把它们去掉。在
还有,有没有办法在图中添加箭头?在
这是我的代码:
import random
import math
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
pi = 3.14159
bignum = 3
amp = 0.1
mat = []
X = []
Y = []
class mode:
i=0
j=0
phase=0
amp=0
modes = dict()
for i in range(0,3):
submodes = dict()
for j in range (0,5):
if not (i==0 and j==2):
m = mode()
m.i = i
m.j = j
m.amp = amp*random.random()/(pow(i,2) + pow(j-2,2))
m.phase = random.random()*2*pi
submodes[j] = m
modes[i] = submodes
for x in range (0,bignum):
mat.append([])
for y in range (0,bignum):
dz = 0
for i in range (0,3):
for j in range (0,5):
if not (i == 0 and j == 2):
dz += math.cos(i*x*2*pi/bignum + j *y*2/bignum + modes[i][j].phase)*modes[i][j].amp
mat[x].append(dz)
X = np.mgrid[:bignum,:bignum]
print (len(X[0]))
print (len(mat))
fig = plt.figure(figsize=plt.figaspect(2.))
fig.frameon=True
ax = fig.add_subplot(1,1,1, projection='3d')
ax.frameon=False
ax.xticks=[]
ax.yticks=[]
ax.zticks=[]
surf = ax.plot_surface(X[0],X[1],mat,rstride=1, cstride=1,
linewidth=0, antialiased=False)
ax.set_zlim3d(0, 1)
plt.show()
这回答不了你的问题。但是你可以用
我在下面做了一些。还有,这个plt.注释()函数是如何在二维图中添加箭头…不确定它是如何放大的。在
^{pr2}$你没问这个…但你应该把代码矢量化。大部分/(全部?)可以避免for循环。在
要从图形中消除三维框架,请使用:
相关问题 更多 >
编程相关推荐