Python-Newbie vagyok, és fel akarok rajzolni egy -0,2 és 0,2 közötti értéklistát. A lista így néz ki
[...-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].
A statisztikákban megtanultam adataimat osztályokba csoportosítani, hogy hasznos diagramot kapjak egy hisztogramhoz, ami ilyen nagy adatok.
Hogyan adhatok osztályokat a pythonba a plotomhoz?
A kódom
plt.hist(data)
és a hisztogram úgy néz ki, hogy
De úgy kell kinéznie, hogy mg src = “https://i.stack.imgur.com/k5rwR.png” alt = “ide írja be a kép leírását” title = “Csak egy példa – a méretarányok különböznek!”>
Megjegyzések
- Ez nem világos. Kérdezi az adatok csoportosítását vagy a csoportosított adatok ábrázolását?
- @ Stephen Rauch: Az adatok csoportosítását kérem a plt.hist () vagy más módon. Az adatok csoportosítása után meg akarom valósítani a cselekményt. @ Media: plt.hist (cum_returns_10_5, bin = tartomány (min (cum_returns_10_5), max (cum_returns_10_5) + binwidth, binwidth)) NameError: név ' binwidth ' nincs meghatározva plt.hist (adatok, tárolók = tartomány (perc (adatok), max (adatok) + bin szélesség) , a tároló szélessége)) A megoldás hibát eredményez (lásd fent).
- Nem szabad ezt az információt válaszba foglalnia. Megjegyzéseket fűzhet, szerkesztheti kérdését, vagy mindkettőt.
- Üdvözöljük a @Tom közösségben, használjuk a megjegyzéseket. nem működik, mert be kell állítania őket. ezek jellegzetes változók szemléltetés céljából, helyettük értékeket kell beállítania.
- Köszönjük ezt a tippet @Media! @Stephen Rauch: Olyan kedves lennél, és kommentálnál, hogy csoportosítod-e a pythonban az adatokat, amelyek listába vannak írva, hogy megrajzolhatók legyenek? Köszönöm a segítséget 🙂
Válasz
A hisztogramja érvényes, de túl sok bin van ahhoz, hogy hasznos.
Ha egyforma távolságban lévő kukákat szeretne, akkor egyszerűen továbbíthatja ezt a számot a bins
argumentumon keresztül plt.hist
, pl .:
plt.hist(data, bins=10)
Ha azt szeretné, hogy a kukák meghatározott élekkel rendelkezzenek, átadhatja ezeket listaként a :
plt.hist(data, bins=[0, 5, 10, 15, 20, 25, 30, 35, 40, 60, 100])
Végül meghatározhat egy módszert is a kuka éleinek automatikus kiszámításához, például auto
(a rendelkezésre álló módszereket a numpy.histogram_bin_edges
dokumentációja határozza meg):
plt.hist(data, bins="auto")
Teljes kódminta
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");
Válasz
Meg kell adnia a kuka méretét , ha én “v kitaláltam a kérdést. Amint azt itt megfogalmaztuk.
Megadhat egy listát a kuka határaival.
plt.hist(data, bins=[0, 10, 20, 30, 40, 50, 100])
Ha csak egyenlő eloszlást szeretne, egyszerűen használhatja a tartományt:
plt.hist(data, bins=range(min(data), max(data) + binwidth, binwidth))
Megteheti pillantás ide és ide .
Megjegyzések
- Ha azt szeretné, hogy egyenlően legyenek elosztva, van egy egyszerűbb módszer is: ahelyett, hogy argumentumként megadná a bin határait, csak mondja meg a matplotlib-nek, hogy hány bin-t szeretne, pl.
plt.hist(data, bins=20)
. - @Xavier Köszönjük válaszát, gondolom, érdemes elküldenie a válaszát. Mint észrevehette, a kérdés még nincs lezárva 🙂