Из документации matplotlib.pyplot.stackplot
ожидается, что первый аргумент будет иметь размерность N
, а второй - размерность MxN
, поэтому ожидается, что каждая строка будет иметь размерность N
,но df.index
возвращает объект формы (7222,)
(поскольку df
имеет форму (7222, 24)
).Вы можете увидеть это в действии в следующем примере, если вы переключите df.index
и df.columns
(как у меня).
Простое решение здесь - просто транспонировать DataFrame
.Это тогда даст matplotlib
то, что он ожидает для аргументов стека.
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
df = pd.DataFrame([[0.971710, 0.027471, 0.000819, 0.0],
[0.966265, 0.032919, 0.000815, 0.0],
[0.970886, 0.028280, 0.000833, 0.0],
[0.969092, 0.030065, 0.000842, 0.0],
[0.970326, 0.028856, 0.000817, 0.0],
[0.969999, 0.029176, 0.000825, 0.0]])
df.index = {"row 1", "row 2", "row 3", "row 4", "row 5", "row 6"}
df.columns = {"column 1", "column 2", "column 3", "column 4"}
plt.stackplot(df.columns, df, labels=list(df.index))
plt.title("Original")
plt.show()
t = df.transpose()
plt.stackplot(t.columns, t, labels=list(t.index))
plt.title("Transposed")
plt.show()

