Come posso aprire più file di testo da diverse directory e tracciarli su un singolo grafico con legende?Come stampare i dati da più file di testo a due colonne con legende in Matplotlib?
risposta
Assumere il file assomiglia a questo ed è denominato test.txt (spazio delimitato):
1 2
3 4
5 6
7 8
Poi:
#!/usr/bin/python
import numpy as np
import matplotlib.pyplot as plt
with open("test.txt") as f:
data = f.read()
data = data.split('\n')
x = [row.split(' ')[0] for row in data]
y = [row.split(' ')[1] for row in data]
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.set_title("Plot title...")
ax1.set_xlabel('your x label..')
ax1.set_ylabel('your y label...')
ax1.plot(x,y, c='r', label='the data')
leg = ax1.legend()
plt.show()
trovo che la consultazione del sito gallery of plots on the matplotlib utile per capire le etichette delle leggende e degli assi.
Perché si interpretare i dati direttamente invece di usando np.loadtxt? – cge
Non ho mai avuto molta fortuna con np.loadtxt (di solito hanno file di input messier), ma per questo semplice esempio, probabilmente funzionerebbe alla grande. – tbc
Perché non utilizzare il modulo csv con delimitatore impostato nello spazio? – Dhara
Ciò è relativamente semplice se si utilizza direttamente pylab (incluso in matplotlib) anziché matplotlib. Inizia con un elenco di nomi di file e nomi di legenda, come [('nome del file 1', 'etichetta 1'), ('nome del file 2', 'etichetta 2'), ...]. Quindi è possibile utilizzare qualcosa come il seguente:
import pylab
datalist = [ (pylab.loadtxt(filename), label) for filename, label in list_of_files ]
for data, label in datalist:
pylab.plot(data[:,0], data[:,1], label=label)
pylab.legend()
pylab.title("Title of Plot")
pylab.xlabel("X Axis Label")
pylab.ylabel("Y Axis Label")
È inoltre possibile aggiungere qualcosa come fmt = 'o' al comando trama, al fine di cambiare da una linea a punti. Per impostazione predefinita, matplotlib con pylab traccia la stessa figura senza cancellarla, quindi è possibile eseguire il comando di stampa più volte.
Grazie per avermi aiutato, ma sto incontrando alcuni problemi. Qual è lo scopo di "list_of_files". Inoltre, quando digito pylab.plot (dati [:, 0], dati [:, 1], etichetta = etichetta) ottengo questo [
Il list_of_files è per se si vuole tracciare più file: basta fare qualcosa come list_of_files = [('percorso al file 1', 'etichetta 1'), ('percorso al file 2', 'etichetta 2'), .. .], e il codice traccerà tutti loro sulla stessa trama con quelle etichette. Per quanto riguarda l'output che ottieni, è la solita uscita; la trama dovrebbe apparire in una finestra separata? In caso contrario, si è verificato un problema con l'installazione di matplotlib. Stai usando ipython? Se è così, stai usando un notebook ipython o solo un ipython standard? – cge
Grazie e io sono in grado di farlo subito. Ho un problema però che è che la trama salvata ha vecchi grafici nel nuovo grafico e l'unico modo per me di avere un nuovo grafico è riavviare Python IDLE. Perché è così? Voglio avere più grafici ma non con il grafico precedente dell'ultima figura/grafico. – Hiren
mi sento il modo più semplice sarebbe
from matplotlib import pyplot;
from pylab import genfromtxt;
mat0 = genfromtxt("data0.txt");
mat1 = genfromtxt("data1.txt");
pyplot.plot(mat0[:,0], mat0[:,1], label = "data0");
pyplot.plot(mat1[:,0], mat1[:,1], label = "data1");
pyplot.legend();
pyplot.show();
- etichetta è la stringa visualizzata sulla leggenda
- si può tracciare come molte serie di punti dati possibile prima di show() per tracciare tutti sullo stesso grafico Questo è il modo semplice per tracciare grafici semplici. Per altre opzioni in genfromtxt vai a questo url.
- 1. Come stampare i file con numpy?
- 2. Come stampare due colonne di un frame di dati panda usando i punti?
- 3. Estrazione dati casella di testo da più file Microsoft Word
- 4. Come stampare gli eventi in tempo con l'utilizzo di matplotlib
- 5. Distribuisci i dati in due colonne
- 6. Come tagliare più colonne da diversi file e stampare l'output in file diversi
- 7. Come posso formattare i dati scritti su un file di testo da fare in colonne?
- 8. Come stampare i vettori di matematica 2d con matplotlib?
- 9. Converti dati da più righe a più colonne
- 10. Come stampare colonne selezionate separate da tabulazioni?
- 11. Aggiunge dinamicamente legende a grafici matplotlib in python
- 12. Casella di testo con ritorno a capo in matplotlib?
- 13. Selezionare Dati da due tabelle con colonne identiche
- 14. Subtructing n numero di colonne da due file con AWK
- 15. Come leggere e stampare i dati da mysql in C#
- 16. T-SQL - ottenere dati in base a due colonne
- 17. Come trovare la differenza tra i dati di due colonne?
- 18. Come incollare colonne da più file in modo ordinato?
- 19. matplotlib: 2 legende diverse sullo stesso grafico
- 20. Come estrarre i dati dal grafico matplotlib
- 21. Panda Python: sostituire i valori più colonne corrispondenti a più colonne da un altro dataframe
- 22. Come stampare due figure in MATLAB
- 23. Come stampare un file di testo sulla stampante in Qt?
- 24. Come stampare (su carta) un frame di dati ben formattato
- 25. Layout a due colonne con markdown
- 26. Da tuple a più colonne in panda
- 27. Come interleave linee da due file di testo
- 28. aggiungere testo o dati in file di testo a Swift
- 29. Come scrivere i dati nel file csv in colonne e righe da un elenco in python?
- 30. Conversione di testo in Matplotlib durante l'esportazione di file .eps
'plotfile' lavora è un modo conveniente per i singoli file: http://stackoverflow.com/questions/12311767/how-to-plot-files-with-numpy –