Back-to-back-Histogramme in matplotlib
-
20-09-2019 - |
Frage
Es ist eine nette Funktion, zieht zurück Histogramme zurück Matlab . Ich brauche ein ähnliches Diagramm in matplotlib zu erstellen. Kann du jemand zeigt ein Arbeitscodebeispiel?
Lösung
Durch die Verbindung von Mark Rushakoff hingewiesen, finden Sie, was ich schließlich tat
import numpy as np
from matplotlib import pylab as pl
dataOne = get_data_one()
dataTwo = get_data_two()
hN = pl.hist(dataTwo, orientation='horizontal', normed=0, rwidth=0.8, label='ONE')
hS = pl.hist(dataOne, bins=hN[1], orientation='horizontal', normed=0,
rwidth=0.8, label='TWO')
for p in hS[2]:
p.set_width( - p.get_width())
xmin = min([ min(w.get_width() for w in hS[2]),
min([w.get_width() for w in hN[2]]) ])
xmin = np.floor(xmin)
xmax = max([ max(w.get_width() for w in hS[2]),
max([w.get_width() for w in hN[2]]) ])
xmax = np.ceil(xmax)
range = xmax - xmin
delta = 0.0 * range
pl.xlim([xmin - delta, xmax + delta])
xt = pl.xticks()
n = xt[0]
s = ['%.1f'%abs(i) for i in n]
pl.xticks(n, s)
pl.legend(loc='best')
pl.axvline(0.0)
pl.show()
Andere Tipps
Die matplotlib Benutzer Mailing-Post hat einigen Beispielcode für ein bihistogram das geht nach oben und unten statt nach links und rechts. Hier ist das Beispiel für die Ausgabe er verknüpft.
Wenn up-down absolut nicht für Sie arbeiten, sollte es nur ein paar Minuten dauern die Operationen auf der y-Achse mit der x-Achse Operationen zu tauschen.
Auch ist Ihr Link nicht eine MATLAB-Funktion, es ist ein tatsächliches Skript, dass jemand in etwa 40 Zeilen schrieb. Man könnte tatsächlich am Skript Quelle schauen und versuchen, es zu portieren, da MATLAB und matplotlib ziemlich nahe Syntax haben.