Histogramový graf s plt.hist ()

Jsem Python-Newbie a chci vykreslit seznam hodnot mezi -0,2 a 0,2. Seznam vypadá takto

[...-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]. 

Ve statistikách jsem se naučil seskupovat svá data do tříd, abych získal užitečný graf pro histogram, který závisí na tak velkém data.

Jak mohu do svého spiknutí přidat třídy v pythonu?

Můj kód je

plt.hist(data) 

a histogram vypadá jako zde zadejte popis obrázku

Ale měl by vypadat jako mg src = „https://i.stack.imgur.com/k5rwR.png“ alt = „zde zadejte popis obrázku“ title = „Pouze příklad – váhy se liší!“>

Komentáře

  • To je nejasné. Ptáte se, jak seskupit data nebo jak vykreslit seskupená data?
  • @ Stephen Rauch: Žádám o seskupení dat pomocí plt.hist () nebo jiným způsobem. Po seskupení dat chci realizovat graf. @ Media: plt.hist (cum_returns_10_5, bins = range (min (cum_returns_10_5), max (cum_returns_10_5) + binwidth, binwidth)) NázevError: název ' binwidth ' není definován plt.hist (data, bins = range (min (data), max (data) + binwidth) , šířka koše)) Vaše řešení způsobí chybu (podívejte se výše).
  • Tyto informace byste neměli dávat do odpovědi. Můžete okomentovat nebo upravit svou otázku, nebo obojí.
  • vítejte v komunitě @Tom, použijte komentáře. Důvod, proč to nefunguje, je ten, že je musíte nastavit. jsou to typické proměnné pro ilustrační účely, místo nich je třeba nastavit hodnoty.
  • Děkuji vám za tuto nápovědu @Media! @Stephen Rauch: Byl byste tak laskavý a dejte mi komentář k tomu, že seskupujete data v pythonu, která jsou zapsána do seznamu, aby bylo možné je vykreslit? Děkujeme za vaši pomoc 🙂

Odpověď

Váš histogram je platný, ale má příliš mnoho přihrádek. užitečné.

Pokud chcete mít několik stejně rozmístěných zásobníků, můžete toto číslo jednoduše předat argumentem bins plt.hist, např .:

plt.hist(data, bins=10) 

Pokud chcete, aby vaše přihrádky měly specifické hrany, můžete je předat jako seznam na bins:

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

Nakonec můžete také určit metodu pro automatický výpočet okrajů koše, například auto (dostupné metody jsou uvedeny v dokumentaci numpy.histogram_bin_edges ):

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

Ukázka úplného kódu

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"); 

zde zadejte popis obrázku

odpověď

Musíte zadat velikost přihrádky , kdybych „v Zjistil jsem otázku. Jak je uvedeno zde .

Můžete zadat seznam s hranicemi bin.

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

Pokud je chcete rovnoměrně distribuovat, můžete jednoduše použít range:

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

Můžete si také vzít podívejte se sem a sem .

Komentáře

  • Pokud je chcete rovnoměrně distribuovat, existuje jednodušší způsob: místo toho, abyste zadali hranice bin jako argument, řekněte matplotlib, kolik košů chcete, např. plt.hist(data, bins=20).
  • @Xavier Děkuji za odpověď, myslím, že budete chtít odpověď odeslat. Jak jste si možná všimli, otázka ještě není uzavřena 🙂

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *