2D-укладка сюжета в 3D-режиме из нескольких функций - PullRequest
0 голосов
/ 02 апреля 2019

Я пытался отобразить кривую экспоненциального затухания в двухмерной манере, складывая несколько в трехмерные графики. Я нашел несколько подобных мне вопросов, например, этот (который, правда, относится только к 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

Очевидно, что эти графики не показывают экспоненциального затухания, я просто хотел указать желаемый конечный формат. Заранее благодарим любого участника!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...