【发布时间】:2017-08-23 03:13:46
【问题描述】:
我正在尝试将此脚本包含在一个类中。这是为了了解类是如何工作的,并使这些函数可以在其他地方使用。
这个脚本在 3D matplotlib 中创建一个球体。球体的方程是 x^2 + y^2 + z^2 = r^2。如果我们将系数添加到任何变量,它会将球体拉长或缩短为椭圆。我希望能够调用这个类并改变 r(radius) 值,也许还有一些系数。
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# CREATE EMPTY LISTS
xs = []
ys = []
zs = []
# FOR EACH Z PLANE "z=dd",
# CREATE CIRCLE WITH RADIUS ppp "ppp=100-dd^2"
def generateZ(dd):
ppp = 100 - dd**2
for xxx in range(-10,10):
zs.append(dd)
xs.append(xxx)
yyy = np.sqrt(ppp - xxx**2)
ys.append(yyy)
for xxx in range(-10,10):
zs.append(dd)
xs.append(xxx)
yyy = -np.sqrt(ppp - xxx**2)
ys.append(yyy)
# GENERATE X AND Y'S FOR EACH Z
for dd in range(-10,10):
generateZ(dd)
# SCATTER X,Y, AND Z COORDINATES
ax.scatter(xs, ys, zs)
# LABEL AXES
ax.set_xlabel("x axis")
ax.set_ylabel("y axis")
ax.set_zlabel("z axis")
# SET DIMENSIONS OF GRAPH
ax.set_ylim([-12,12])
ax.set_xlim([12,-12])
ax.set_zlim([-12,12])
# SHOW GRAPH
plt.show()
我尝试过简单地添加类容器并调用它。结果是 self 没有被定义...
这是尝试。
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
class Sphere(object):
def __init__(self):
self.xs = []
self.ys = []
self.zs = []
# CREATE EMPTY LISTS
# FOR EACH Z PLANE "z=dd",
# CREATE CIRCLE WITH RADIUS ppp "ppp=100-dd^2"
def generateZ(self, dd):
self.ppp = 100 - dd**2
for xxx in range(-10,10):
self.zs.append(dd)
self.xs.append(xxx)
self.yyy = np.sqrt(ppp - xxx**2)
self.ys.append(yyy)
for xxx in range(-10,10):
self.zs.append(dd)
self.xs.append(xxx)
self.yyy = -np.sqrt(ppp - xxx**2)
self.ys.append(yyy)
# GENERATE X AND Y'S FOR EACH Z
for dd in range(-10,10):
self.generateZ(dd)
# SCATTER X,Y, AND Z COORDINATES
self.ax.scatter(xs, ys, zs)
# LABEL AXES
self.ax.set_xlabel("x axis")
self.ax.set_ylabel("y axis")
self.ax.set_zlabel("z axis")
# SET DIMENSIONS OF GRAPH
self.ax.set_ylim([-12,12])
self.ax.set_xlim([12,-12])
self.ax.set_zlim([-12,12])
# SHOW GRAPH
self.plt.show()
john = Sphere.generateZ(10)
【问题讨论】:
-
太棒了。现在我在这里没有看到任何课程,您的问题到底是什么?
-
对不起。刚刚编辑。任何帮助表示赞赏。不精通类的使用。
-
你应该阅读类、
__init__函数等...
标签: python class matplotlib 3d