2017-05-04 3 views
0

Ich möchte, um eine 2D-Oberfläche Grundstück plotten, die sollte ich den obigen Code bekam mit so etwas wie dieses enter image description hereWie Gradient Diagramm mit 3-Achsen-

for i in range(26): 
    for u in range(11,102): 
    line=linecache.getline("C:/Users/USER/Desktop/iteration/" + file_name[i],u) 
    line=np.array(line.split()) 
    z.append(float(line[2])) 
    vmr.append(float(line[3])) 
x=np.linspace(4,6,num=3458) 
y=np.array(z) 
z=np.array(vmr) 
xi, yi = np.linspace(x.min(), x.max(), 100), np.linspace(y.min(), y.max(), 
100) 
xi, yi = np.meshgrid(xi, yi) 
# Interpolate 
zi = scipy.interpolate.griddata((x, y), z, (xi, yi), method='linear') 

plt.imshow(zi, vmin=z.min(), vmax=z.max(), origin='lower', 
     extent=[x.min(), x.max(), y.min(), y.max()]) 

plt.scatter(x, y, c=z) 
plt.colorbar() 
plt.show() 

The Plot sieht ist:

enter image description here

Sollte ich eine andere Sprache/Software als Python versuchen ??? Ich bin neu dazu, jede Hilfe wird geschätzt Danke

+0

danken Ihnen so viel .... es – caty

Antwort

1

Das Problem scheint zu sein, dass das Bilddiagramm sehr unterschiedliche Dimensionen entlang beiden Achsen hat. Da imshow standardmäßig einen gleichen Aspekt hat, erhalten Sie möglicherweise ein Ergebnis wie das, das Sie in der Frage zeigen.

Eine einfache Lösung hierfür ist die Beschränkung auf das gleiche Seitenverhältnis zu lösen:

plt.imshow(...., aspect="auto") 
+0

arbeitete ich habe ein weiteres Problem, was ich bekomme ein Streudiagramm ist, möglicherweise aufgrund des Befehls "plt.scatter()", kann ich es durch etwas anderes ersetzen, so dass ich eine kontinuierliche Steigung Plot wie oben erwähnt erhalten Vielen Dank – caty

+0

Bitte denken Sie daran, dass ich Ihre Daten nicht habe und somit nicht haben jede Chance zu wissen, wie Ihre Handlung im Vergleich zur gewünschten Handlung aussieht. – ImportanceOfBeingErnest