2015-05-07 15 views
5

Meine csv-Datei siehtGrafische Darstellung von Daten aus CSV-Dateien mit matplotlib

0.0 1 
0.1 2 
0.2 3 
0.3 4 
0.5 7 
1.0 9 


0.0 6 
0.1 10 
0.2 11 
0.3 12 
0.5 13 
1.0 14 

... 

und ich möchte die erste Spalte in x-Achse, die zweite Spalte als y-Achse zeichnen. Also mein Code ist

import matplotlib.pyplot as plt 
from numpy import genfromtxt 
data=genfromtxt("test",names=['x','y']) 
ax=plt.subplot(111) 
ax.plot(data['x'],data['y']) 
plt.show() 

Aber dies den Endpunkt des Graphen verbinden, gerade Linie zeigt, graph http://cfile7.uf.tistory.com/image/24776F37554AD3670CECF8 Was ich will, dieser Graph ist. graph http://cfile7.uf.tistory.com/image/27372B49554AD4422EBD0F

Dann, wie lese ich Datendatei oder gibt es irgendwelche Optionen in Matplotlib die Verbindung zu trennen?

+1

Zeigen Sie die Werte data ['x'] und data ['y'] an. Sind sie richtig? – cphlewis

+0

Wenn ich 'print data ['x']' und 'print data ['y']' eintippe, erscheint '[0.1 0.1 0.2 0.3 0.5 1. 0. 0.1 0.2 0.3 0.5 1.]' und '[ 1. 2. 3. 4. 7. 9. 6. 10. 11. 12. 13. 14.] ' – user42298

+1

Keine Kommas? Was ist 'Typ (Daten ['x'])' '? – cphlewis

Antwort

1

Wie in den Kommentaren bereits erwähnt, werden bei jedem Plotaufruf alle Punktpaare grafisch dargestellt, sodass Sie die Daten für jede Spalte teilen müssen. Wenn alle Linien der Größe sind 6 Punkte können Sie etwas tun:

import matplotlib.pyplot as plt 
from numpy import genfromtxt 
data=genfromtxt("test",names=['x','y']) 
x=data['x'] 
y=data['y'] 
columnsize = int(len(x)/6) 
ax=plt.subplot(111) 
for i in range(columnsize): 
    ax.plot(x[i*6:(i+1)*6],y[i*6:(i+1)*6]) 
plt.show() 

dieser Code funktioniert, wenn x und y von numpy.ndarray Typ sind. Numpy-Arrays unterstützen indexing and slicing als Python-Standardsyntax.

Verwandte Themen