English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
pip3 安装:
pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
Anche i sistemi Linux possono utilizzare il gestore dei pacchetti per installare:
Debian / Ubuntu:
sudo apt-get install python-matplotlib
Fedora / Redhat:sudo yum install python-matplotlib
Dopo l'installazione, puoi usare python -m pip list Comando per verificare se il modulo matplotlib è installato.
$ pip3 list | grep matplotlib matplotlib 3.3.0
import numpy as np from matplotlib import pyplot as plt x = np.arange(1,11) y = 2 * x + 5 plt.title("Matplotlib demo") plt.xlabel("didascalia asse X") plt.ylabel("didascalia asse Y") plt.plot(x,y) plt.show()
Nell'esempio sopra, la funzione np.arange() crea i valori dell'asse x. I valori corrispondenti sull'asse y sono memorizzati in un altro oggetto array y. Questi valori vengono tracciati utilizzando la funzione plot() del sottomodulo pyplot del pacchetto matplotlib.
Il grafico viene visualizzato tramite la funzione show().
Matplotlib di default non supporta i caratteri cinesi, possiamo risolvere il problema con il seguente metodo semplice.
Qui usiamo SimSun, SimSun è un font open-source lanciato da Adobe e Google.
Sito ufficiale: https://source.typekit.com/source-han-serif/cn/
Indirizzo GitHub: https://github.com/adobe-fonts/source-han-sans/tree/release/OTF/SimplifiedChinese
Apri il link e seleziona uno tra quelli disponibili:
Puoi scaricare un font OTF, come SourceHanSansSC-Bold.otf, e metterlo nel file sorgente di esecuzione:
Il file SourceHanSansSC-Bold.otf deve essere collocato nel file sorgente di esecuzione:
import numpy as np from matplotlib import pyplot as plt import matplotlib # fname è il percorso della tua libreria di font, attenzione al percorso del font SourceHanSansSC-Bold.otf zhfont1 = matplotlib.font_manager.FontProperties(fname="SourceHanSansSC-Bold.otf") x = np.arange(1,11) y = 2 * x + 5 plt.title("Terreno di produzione - Test", fontproperties=zhfont1) # fontproperties imposta la visualizzazione cinese, fontsize imposta la dimensione del font plt.xlabel("x asse", fontproperties=zhfont1) plt.ylabel("y asse", fontproperties=zhfont1) plt.plot(x,y) plt.show()
Inoltre, possiamo utilizzare i font del sistema:
from matplotlib import pyplot as plt import matplotlib a=sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist]) for i in a: print(i)
Stampare tutti i nomi registrati in ttflist del font_manager, trovare un font cinese come: STFangsong(仿宋), e aggiungere il seguente codice:
plt.rcParams['font.family']=['STFangsong']
Come alternativa alla rappresentazione lineare, è possibile visualizzare valori discreti aggiungendo una stringa di formato al funzione plot(). Ecco i caratteri di formattazione disponibili.
Carattere | Descrizione |
'-' | Stile lineare |
'--' | Stile tratteggiato corto |
'-.' | Stile punteggiato |
':' | Stile tratteggiato |
'.' | Marcatura punto |
',' | Marcatura pixel |
'o' | Marcatura cerchio |
'v' | Marcatura triangolo rovesciato |
'^' | Marcatura triangolo |
'<' | Marcatura triangolo sinistro |
'>' | Marcatura triangolo destro |
'1' | Marcatura freccia in basso |
'2' | Marcatura freccia in alto |
'3' | Marcatura freccia sinistra |
'4' | Marcatura freccia destra |
's' | Marcatura quadrato |
'p' | Marcatura pentagono |
'*' | Marcatura stella |
'h' | Marcatura esagono 1 |
'H' | Marcatura esagono 2 |
'+' | Marcatura plus |
'x' | Marcatura X |
'D' | Marcatura rombo |
'd' | Marcatura rombo piccolo |
'|' | Marcatura linea verticale |
'_' | Marcatura linea orizzontale |
Di seguito sono riportati gli abbreviati dei colori:
Carattere | Colore |
'b' | Blu |
'g' | Verde |
'r' | Rosso |
'c' | Ciano |
'm' | Viola |
'y' | Giallo |
'k' | Nero |
'w' | Bianco |
Per visualizzare un cerchio per rappresentare i punti invece della linea nell'esempio precedente, utilizzare "ob" come stringa di formato nel funzione plot().
import numpy as np from matplotlib import pyplot as plt x = np.arange(1,11) y = 2 * x + 5 plt.title("Matplotlib demo") plt.xlabel("didascalia asse X") plt.ylabel("didascalia asse Y") plt.plot(x, y, "ob") plt.show()
Il risultato dell'esecuzione è illustrato nella figura seguente:
Il seguente esempio utilizza matplotlib per generare un grafico di onda sinusoidale.
import numpy as np import matplotlib.pyplot as plt # Calcola le coordinate x e y dei punti sulla curva sinusoidale x = np.arange(0, 3 * np.pi, 0.1) y = np.sin(x) plt.title("forma d'onda sinusoidale") # Usa matplotlib per disegnare punti plt.plot(x, y) plt.show()
Il risultato dell'esecuzione è illustrato nella figura seguente:
La funzione subplot() ti permette di disegnare diverse cose nello stesso grafico.
Il seguente esempio disegna valori sinusoidali e cosinici:
import numpy as np import matplotlib.pyplot as plt # Calcola le coordinate x e y dei punti sulla curva sinusoidale x = np.arange(0, 3 * np.pi, 0.1) y_sin = np.sin(x) y_cos = np.cos(x) # Crea una griglia di subplot, altezza 2, larghezza 1 # Attiva il primo subplot plt.subplot(2, 1, 1) # Disegna la prima immagine plt.plot(x, y_sin) plt.title('Sine') # Attiva il secondo subplot e disegna la seconda immagine plt.subplot(2, 1, 2) plt.plot(x, y_cos) plt.title('Cosine') # Mostra l'immagine plt.show()
Il risultato dell'esecuzione è illustrato nella figura seguente:
Il sottomodulo pyplot fornisce la funzione bar() per generare grafici a barre.
La seguente esempio genera un grafico a barre per due array x e y.
from matplotlib import pyplot as plt x = [5, 8, 10] y = [12, 16, 6] x2 = [6, 9, 11] y2 = [6, 15, 7] plt.bar(x, y, align='center') plt.bar(x2, y2, color='g', align='center') plt.title(' grafico a barre') plt.ylabel('asse Y') plt.xlabel('asse X') plt.show()
Il risultato dell'esecuzione è illustrato nella figura seguente:
La funzione numpy.histogram() rappresenta la distribuzione di frequenza dei dati in forma grafica. I rettangoli di dimensioni orizzontali uguali corrispondono all'intervallo di classe, chiamati bin, e la variabile height corrisponde alla frequenza.
La funzione numpy.histogram() accetta due parametri: un array di input e un array di bin. Gli elementi consecutivi dell'array bin vengono utilizzati come margini di ciascun bin.
import numpy as np a = np.array([22,87,5,43,56,73,55,54,11,20,51,5,79,31,27]) np.histogram(a, bins = [0,20,40,60,80,100]) hist, bins = np.histogram(a, bins = [0,20,40,60,80,100]) print(hist) print(bins)
Il risultato di output è:
[3 4 5 2 1] [0 20 40 60 80 100]
Matplotlib può trasformare la rappresentazione numerica delle istogrammi in grafici. La funzione plt() del sottomodulo pyplot contiene un array con dati e un array con i bin come parametri e lo trasforma in un istogramma.
from matplotlib import pyplot as plt import numpy as np a = np.array([22,87,5,43,56,73,55,54,11,20,51,5,79,31,27]) plt.hist(a, bins = [0,20,40,60,80,100]) plt.title("istogramma") plt.show()
Il risultato dell'esecuzione è illustrato nella figura seguente:
Più riferimenti su Matplotlib: