Cum să complot un log-log histogramă în matplotlib

0

Problema

Mă întreb cum de a avea un grafic log-log pentru vizualizarea frecvența de elemente într-o listă, de exemplu:

my_list=[1,2,3,3,3,4,1,2,5,2,10,4,5,3,3,3,2,1]

Am complotat date folosind o histogramă:

plt.hist(my_list, label='Frequency Distribution of matches')
plt.legend()
plt.ylabel('Frequency')

Dar ar fi mai bine să-l vizualizeze ca log-log.

matplotlib python
2021-11-23 22:07:00
1

Cel mai bun răspuns

1

plt.hist include un log param, care se comportă ca plt.yscale('log') deoarece numai cântare axa y:

log: Dacă True, la histograma axa va fi setat la o scară logaritmică.

La scala, de asemenea, axa x, combina-l cu plt.xscale('log'):

plt.hist(my_list, log=True)
plt.xscale('log')

Dacă doriți egală cu lățimea baruri, defini bins ca 10 ** edges:

start, stop = np.log10(min(my_list)), np.log10(max(my_list))
bins = 10 ** np.linspace(start, stop, 10)

plt.hist(my_list, log=True, bins=bins)
ax.set_xscale('log')

Pentru a obține un log-log linie teren de frecvențe, utilizare plt.stairs (necesită matplotlib 3.4+) cu np.histogram:

plt.stairs(*np.histogram(my_list))
plt.yscale('log')
plt.xscale('log')

2021-11-24 00:57:46

multumesc, tdy. Ar fi posibil să complot, în loc de o histogramă, o linie complot folosind log=True?
Math

@Math adică un log-log linie teren de frecvențe? dacă este așa, folosiți plt.stairs (necesită matplotlib 3.4+) cu np.histogram (răspuns actualizat)
tdy

vezi stackoverflow.com/a/68201845/13138364 pentru mai multe detalii privind scari de parcele
tdy

În alte limbi

Această pagină este în alte limbi

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................