Próbuję narysować część histogramu przy użyciu matplotlib.Matplotlib normowane histogramy
Zamiast rysować cały histogram, który ma wiele wartości odstających i dużych, chcę skupić się na niewielkiej części. Oryginalny histogram wygląda następująco:
hist(data, bins=arange(data.min(), data.max(), 1000), normed=1, cumulative=False)
plt.ylabel("PDF")
I po ustawieniu ostrości wygląda to tak:
hist(data, bins=arange(0, 121, 1), normed=1, cumulative=False)
plt.ylabel("PDF")
Zauważ, że ostatni bin jest rozciągnięta i najgorsze takty Y są skalowane tak, że suma wynosi dokładnie 1 (więc punkty poza bieżącym zakresem nie są brane pod uwagę)
Wiem, że mogę osiągnąć to, co chcę, rysując histogram w całym możliwym zakresie, a następnie ograniczając oś do części, która mnie interesuje, ale marnuje ona dużo czasu na obliczanie pojemników, których nie chcę użyj/zobacz mimo to.
hist(btsd-40, bins=arange(btsd.min(), btsd.max(), 1), normed=1, cumulative=False)
axis([0,120,0,0.0025])
Czy istnieje szybki i łatwy sposób narysować tylko region skupiony ale wciąż skala Y są prawidłowe?
Jak wartości Normed być obliczane bez brania cały zestaw danych pod uwagę? Ogólnie, wartości histogramu należy obliczyć tak, aby całka krzywej wynosiła 1, a nie po prostu przez podzielenie przez liczbę punktów. – chthonicdaemon
W przypadku braku funkcji opisującej rozkład najlepiej jest zliczyć liczbę punktów i odpowiednio podzielić. – cdecker