Jak otworzyć wiele plików tekstowych z różnych katalogów i narysować je na jednym wykresie z legendami?Jak narysować dane z wielu dwóch plików tekstowych kolumn z legendami w Matplotlib?
Odpowiedz
zakładamy, że plik wygląda tak i nazywa test.txt (spacjami):
1 2
3 4
5 6
7 8
Następnie:
#!/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()
Uważam, że przeglądanie witryny gallery of plots on the matplotlib pomocny do określania legend i etykiet osi.
Dlaczego interpretacji danych bezpośrednio zamiast używając np.loadtxt? – cge
Nigdy nie miałem dużo szczęścia z np.loadtxt (zazwyczaj mają pliki wejściowe Messiera), ale dla tego prostego przykładu, prawdopodobnie działałoby świetnie. – tbc
Dlaczego nie używać modułu csv z ogranicznikiem ustawionym na spację? – Dhara
Jest to stosunkowo proste, jeśli używasz pylab (zawartego w matplotlib) zamiast bezpośrednio w matplotlib. Zacznij od listy nazw plików i nazw legendy, takich jak [("nazwa pliku 1", "etykieta 1"), ("nazwa pliku 2", "etykieta 2"), ...]. Następnie można użyć coś jak następuje:
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")
też chcieć dodać coś takiego fmt = „o” na polecenie działce, w celu zmiany z linii do punktów. Domyślnie matplotlib z paclab rysuje tę samą figurę bez jej usuwania, więc możesz po prostu uruchomić komendę plotowania wiele razy.
Dziękuję za pomoc, ale mam pewne problemy. Jaki jest cel "list_f_files". Ponadto, gdy piszę: pylab.plot (dane [:, 0], dane [:, 1], etykieta = etykieta) otrzymuję ten obiekt [
Lista_plików jest przeznaczona do tworzenia wielu plików: wystarczy zrobić coś takiego jak list_f_files = [("ścieżka do pliku 1", "etykieta 1"), ("ścieżka do pliku 2", "etykieta 2"), ... .], a kod wykreśli wszystkie z nich na tym samym wykresie z tymi etykietami. Jeśli chodzi o dane wyjściowe, to jest to zwykłe wyjście; fabuła powinna pojawić się w osobnym oknie? Jeśli nie, masz problem z instalacją matplotlib. Czy korzystasz z ipython? Jeśli tak, czy korzystasz z iPythona lub standardowego ipythona? – cge
Dziękuję i jestem w stanie zrobić to teraz. Mam jednak jeden problem, który polega na tym, że zapisany wykres ma stare wykresy na nowym wykresie, a jedyną opcją dla mnie jest posiadanie nowych wykresów przez ponowne uruchomienie Pythona IDLE. Dlaczego tak się dzieje? Chcę mieć wiele wykresów, ale nie z poprzednim wykresem z ostatniego rysunku/wykresu. – Hiren
czuję najprostszym sposobem byłoby
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();
- etykieta jest ciąg znaków, który jest wyświetlany na legendzie
- można wykreślić jak najwięcej serię punktów danych, jak to możliwe przed show() do działki wszystkie z nich na tym samym wykresie To jest prosty sposób na wykreślenie prostych wykresów. W przypadku innych opcji w genfromtxt przejdź do tego url.
- 1. Jak przeplatać linie z dwóch plików tekstowych
- 2. Porównywanie dwóch plików tekstowych w pythonie
- 3. Subtructing n liczba kolumn z dwóch plików z AWK
- 4. Nieprzezroczyste pudełko z legendami
- 5. Średnia z wielu kolumn
- 6. Matplotlib: Przechwytuj pojedynczy podplat z wielu podplotów
- 7. Pythonowy sposób importowania danych z wielu plików do tablicy
- 8. Can modułu plików analizy: Python CSV z wielu kolumn ograniczniki
- 9. łączenie wielu plików tekstowych i usuwanie duplikatów.
- 10. Deduplikacja SQL z dwóch kolumn
- 11. Python: czytanie skomplikowanych plików tekstowych z numpy
- 12. Jak wyciąć wiele kolumn z kilku plików i wydrukować dane wyjściowe do różnych plików
- 13. Jak wyodrębnić dane z działki matplotlib
- 14. Łączenie wielu plików tekstowych w pojedynczy plik w Bash
- 15. odczytywania plików tekstowych z wykorzystaniem read.table
- 16. W jaki sposób można narysować znormalizowany wykres imshow z kolorowym paskiem reprezentującym surowe dane w matplotlib
- 17. Renderowanie diagramów UML z plików tekstowych
- 18. Usuwanie niedrukowalnych znaków "gremlin" z plików tekstowych
- 19. select * z dwóch tabel o różnej # kolumn
- 20. Tworzenie legendy wielu kolumn w ggplot
- 21. przetwarzanie tekstu z dwóch plików
- 22. Kombajny kolumn z różnych plików
- 23. Uzyskiwanie sumy kilku kolumn z dwóch tabel
- 24. Łączenie dwóch tabel z inną liczbą kolumn
- 25. Jak uzyskać największą z dwóch wartości kolumn w MySQL?
- 26. Jak utworzyć krotkę z dwóch kolumn w Pandach
- 27. Panda Fillna z wielu kolumn z trybem każdej kolumny
- 28. Usuwanie linii z kolorów i wypełnienia legendami
- 29. Zrzut MySQL do plików tekstowych CSV z nazwami kolumn na górze?
- 30. Jak mogę utworzyć spójne szerokości wykresów w ggplot (z legendami)?
'plotfile' działa to wygodny sposób dla pojedynczych plików: http://stackoverflow.com/questions/12311767/how-to-plot-files-with-numpy –