Я пытался отобразить кривую экспоненциального затухания в двухмерной манере, складывая несколько в трехмерные графики. Я нашел несколько подобных мне вопросов, например, этот (который, правда, относится только к Mathematica ...) https://mathematica.stackexchange.com/questions/148420/create-a-3d-stack-of-2d-line-plots
или этот ( изменение оси x для 3d polycollection matplotlib ), что было бы очень полезно, если бы код действительно работал.
Я пытался сделать что-то самостоятельно, работая над вышеупомянутым и несколькими другими источниками, хотя я просто сталкиваюсь с новой ошибкой, когда меняю что-то.
Прямо сейчас мой код выглядит так:
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.collections import PolyCollection
import matplotlib.pyplot as plt
from matplotlib import colors as mcolors
import numpy as np
fig = plt.figure()
ax = fig.gca(projection='3d')
def cc(arg):
return mcolors.to_rgba(arg, alpha=0.6)
xs = np.arange(0, 0.128, 0.001)
verts = []
zs = [0, 1, 2, 3, 4, 5.0]
for z in zs:
ys = np.random.rand(len(xs))
ys[0], ys[-1] = 0, 0
verts.append(list(zip(xs, ys)))
poly = PolyCollection(verts, facecolors=[cc('midnightblue'), cc('navy'), cc('darkblue'),
cc('mediumblue'), cc('blue'), cc("b")])
poly.set_alpha(0.7)
ax.add_collection3d(poly, zs=zs, zdir='y')
ax.set_xlabel('X')
ax.set_xlim3d(0, 0.128)
ax.set_ylabel('Y')
ax.set_ylim3d(-1, 6)
ax.set_zlabel('Z')
ax.set_zlim3d(0, 1)
plt.show()
Вместо функций np.random
, приведенных выше, я хотел бы использовать несколько экспоненциальных затуханий, основанных на следующем общем виде: a * np.exp(-b * x)
. Как пример, любые значения параметров a
и b
будут в порядке, я просто пытаюсь отобразить любое затухание на этом этапе. Эстетически, мой идеальный результат был бы что-то вроде:
![a busy cat](https://i.stack.imgur.com/kd56z.png)
Очевидно, что эти графики не показывают экспоненциального затухания, я просто хотел указать желаемый конечный формат.
Заранее благодарим любого участника!