我有这个代码修改的主题在这里:
How to produce a revolution of a 2D plot with matplotlib in Python
该图包含XY平面中的一个子图和旋转实体朝向y轴的另一个子图。
我想添加另一个子图,它是向x轴旋转的实体+如何向每个子图(在它们上面)添加图例,因此将有3个子图。
这是我的MWE:
# Compare the plot at xy axis with the solid of revolution
# For function x=(y-2)^(1/3)
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
n = 100
fig = plt.figure(figsize=(12,6))
ax1 = fig.add_subplot(121)
ax2 = fig.add_subplot(122,projection='3d')
y = np.linspace(np.pi/8, np.pi*40/5, n)
x = (y-2)**(1/3) # x = np.sin(y)
t = np.linspace(0, np.pi*2, n)
xn = np.outer(x, np.cos(t))
yn = np.outer(x, np.sin(t))
zn = np.zeros_like(xn)
for i in range(len(x)):
zn[i:i+1,:] = np.full_like(zn[0,:], y[i])
ax1.plot(x, y)
ax2.plot_surface(xn, yn, zn)
plt.show()
1条答案
按热度按时间h9a6wy2h1#
选项1:
只需颠倒
x
和y
即可切换函数的轴。选项2:
这个过程有点复杂,你也可以通过求原函数的反函数来完成。
f(x) = y = x^3 + 2
的倒数是f^{-1}(y) = (y - 2)^(1/3)
。我修改了你提供的代码。