如何在python中移除情节要素

2024-06-26 14:25:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在python中创建一个没有任何绘图元素的3d图形。有点像是this的3d版本。在

当我运行下面添加的代码时,我得到了正则plota figure of (Very) simplified surface。 我想删除轴、轴标签、记号和背景(只保留在曲面上)。在

我怎样才能把它们去掉。在

还有,有没有办法在图中添加箭头?在

这是我的代码:

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()

Tags: inimportforpirangepltrandomax
2条回答

这回答不了你的问题。但是你可以用

plt.setp(ax.get_xticklabels(), visible=False)

我在下面做了一些。还有,这个plt.注释()函数是如何在二维图中添加箭头…不确定它是如何放大的。在

^{pr2}$

你没问这个…但你应该把代码矢量化。大部分/(全部?)可以避免for循环。在

要从图形中消除三维框架,请使用:

ax.set_axis_off()

enter image description here

相关问题 更多 >