Wykres histogramu za pomocą plt.hist ()

Jestem początkującym w Pythonie i chcę wykreślić listę wartości między -0,2 a 0,2. Lista wygląda następująco:

[...-0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01489985147131656, -0.015833709930856088, -0.015833709930856088, -0.015833709930856088, -0.015833709930856088, -0.015833709930856088...and so on]. 

W statystykach nauczyłem się grupować dane w klasy, aby uzyskać przydatny wykres dla histogramu, który zależy od tak dużego data.

Jak mogę dodać klasy w Pythonie do mojego wykresu?

Mój kod to

plt.hist(data) 

i histogram wygląda następująco: tutaj wprowadź opis obrazu

Ale powinno wyglądać następująco: mg src = „https://i.stack.imgur.com/k5rwR.png” alt = „tutaj wprowadź opis obrazu” title = „Tylko przykład – skale są różne!”>

Komentarze

  • To jest niejasne. Czy pytasz o sposób grupowania danych lub wykreślania zgrupowanych danych?
  • @ Stephen Rauch: Proszę o pogrupowanie danych za pomocą plt.hist () lub w inny sposób. Po zgrupowaniu danych chcę zrealizować fabułę. @ Media: plt.hist (cum_returns_10_5, bins = range (min (cum_returns_10_5), max (cum_returns_10_5) + binwidth, binwidth)) NameError: nazwa ' binwidth ' nie jest zdefiniowana plt.hist (data, bins = range (min (data), max (data) + binwidth , szerokość pojemnika)) Twoje rozwiązanie powoduje błąd (patrz powyżej).
  • Nie należy umieszczać tych informacji w odpowiedzi. Możesz skomentować, edytować swoje pytanie lub jedno i drugie.
  • witaj w społeczności @Tom, użyj komentarzy. powodem, dla którego nie działa, jest to, że musisz je ustawić. są to typowe zmienne do celów ilustracyjnych, zamiast nich należy ustawić wartości.
  • Dziękuję za tę wskazówkę @Media! @Stephen Rauch: Czy byłbyś tak miły i dał mi komentarz, czy grupujesz dane w Pythonie, które są zapisane na liście, aby można je było wykreślić? Dziękuję za pomoc 🙂

Odpowiedź

Twój histogram jest prawidłowy, ale zawiera zbyt wiele pojemników przydatne.

Jeśli chcesz mieć kilka równo rozmieszczonych pojemników, możesz po prostu przekazać tę liczbę przez argument bins plt.hist, np .:

plt.hist(data, bins=10) 

Jeśli chcesz, aby twoje pojemniki miały określone krawędzie, możesz przekazać je jako listę do bins:

plt.hist(data, bins=[0, 5, 10, 15, 20, 25, 30, 35, 40, 60, 100]) 

Na koniec możesz również określić metodę automatycznego obliczania krawędzi pojemnika, na przykład auto (dostępne metody są określone w dokumentacji numpy.histogram_bin_edges ):

plt.hist(data, bins="auto") 

Pełny przykładowy kod

import matplotlib.pyplot as plt import numpy as np # fix the random state for reproducibility np.random.seed(19680801); # sum of 2 normal distributions n = 500; data = 10 * np.random.randn(n) + 20 * np.random.randn(n) + 20; # plot histograms with various bins fig, axs = plt.subplots(1, 3, sharey=True, tight_layout=True, figsize=(9,3)); axs[0].hist(data, bins=10); axs[1].hist(data, bins=[0, 5, 10, 15, 20, 25, 30, 35, 40, 60, 100]); axs[2].hist(data, bins="auto"); 

tutaj wprowadź opis obrazu

Odpowiedź

Musisz określić rozmiar pojemnika , jeśli ja „v Zrozumiałem pytanie. Jak stwierdzono tutaj .

Możesz podać listę z granicami bin.

plt.hist(data, bins=[0, 10, 20, 30, 40, 50, 100]) 

Jeśli chcesz, aby były one równomiernie rozłożone, możesz po prostu użyć range:

plt.hist(data, bins=range(min(data), max(data) + binwidth, binwidth)) 

Możesz także wziąć spójrz na tutaj i tutaj .

Komentarze

  • Jeśli chcesz, aby były one równomiernie rozłożone, jest prostszy sposób: zamiast podawać granice bin jako argument, po prostu powiedz matplotlib, ile chcesz pojemników, np. plt.hist(data, bins=20).
  • @Xavier Dziękuję za odpowiedź, myślę, że możesz przesłać odpowiedź. Jak być może zauważyłeś, pytanie nie zostało jeszcze zamknięte 🙂

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *