Da es sich um eine Aufnahme in Excel handelt, habe ich versucht herauszufinden, ob matplotlib auch eine Banddiagrammfunktion hat, aber es scheint, dass dies nicht der Fall ist. Normalisieren Sie das gestapelte Balkendiagramm und zeigen Sie es so an, dass der Gesamtwert 1 beträgt.
import numpy as np
import matplotlib.pyplot as plt
N, K = 4, 3
data = np.random.rand(N, K)
tick_labels = ["a", "b", "c", "d"]
labels = ["x", "y", "z"]
normalized = data / data.sum(axis=1, keepdims=True)
cumulative = np.zeros(N)
tick = np.arange(N)
for k in range(K):
color = plt.cm.viridis(float(k) / K, 1)
plt.barh(tick, normalized[:, k], left=cumulative, color=color, label=labels[k])
# plt.bar(tick, normalized[:, k], bottom=cumulative, color=color, label=labels[k])
cumulative += normalized[:, k]
plt.xlim((0, 1))
# plt.ylim((0, 1))
plt.yticks(tick, tick_labels)
# plt.xticks(tick, tick_labels)
plt.legend()
plt.show()
Referenz: https://de.dariah.eu/tatom/topic_model_visualization.html
Recommended Posts