Я хотел бы создать трехмерный график, используя функцию, которая возвращает график и входной аргумент, который он принимает.Это мой код функции:
def cumulative(moment):
bins = np.zeros(32)
x = upper_bin
for i in range(32):
bins[i] = burst_average[moment, 0:i+1].sum()
plt.ylim(ymax = 1000)
plt.xlabel('grain size (um)')
plt.ylabel('concentration (uL/L)')
plt.title('grain size distribution over time')
plt.plot(x, bins, c = 'b', label=dates[i])
return
import ipywidgets as widgets
from ipywidgets import interact
interact(cumulative, moment=widgets.FloatSlider(min = int(0), max = int(nr_burst-1), step = 1, description = 'moment'));
, где x
- это список из 32 значений, bins
- это также массив из 32 значений, который изменяется для каждого moment
.В общей сложности создаются графики nr_burst, что составляет около 2017 года. Виджет работает, однако я хочу включить это в свой отчет, поэтому вместо этого я хотел бы использовать трехмерный график.
Я пытался что-то вроде
from mpl_toolkits.mplot3d import Axes3D
from mpl_toolkits import mplot3d
b0 = np.linspace(0, nr_burst-1, nr_burst)
b= []
for i in range(len(b0)):
b.append(int(b0[i]))
ax.scatter3D(cumulative(b), b)
Это не сработало, выдал ошибку ValueError: Arguments 'xs' and 'ys' must be of same size.
Я также попытался функцию, чтобы вернуть x
и b
и plot
как
ax.scatter3D(cumulative(b)[0], b, cumulative(b)[1])
, который дал ошибку TypeError: 'NoneType' object is not subscriptable.