2016-05-18 12 views
2

Ich habe einige Daten des folgenden Typs: grid = np.array ([posx, posy]) wobei posx und posy die X/Y-Position sind einige, in einem anderen Array gespeichert. Die (transponiert) Gitter kann wie folgt aussehen:Python/Pyplot: Plotten von 2D-Daten bei gegebenem (X, Y)

grid = np.array([posx, posy]) 
print grid.T 
[[ 2.47685286 2.51629155] 
[ 2.47685286 8.51629155] 
[ 2.47685286 14.51629155] 
[ 8.47685286 5.51629155] 
[ 8.47685286 11.51629155] 
[ 14.47685286 2.51629155] 
[ 14.47685286 8.51629155] 
[ 14.47685286 14.51629155]] 

Vor allem die y-Position nicht identisch in jeder „Reihe“ ist und die Anzahl der Punkte unterscheidet, was ich nehme an einem meiner Probleme.

Zusätzlich werden die entsprechenden Daten in einem anderen (1D-) Array gespeichert wie Daten = [2.3 4.7 -0.3 .....] mit der gleichen Menge an Einträgen wie ich Punkte habe. Mein Ziel ist es, diese Daten in Form einer glatten Heatmap darzustellen, die Farben anzeigt, die die Position von hohen/niedrigen Werten anzeigen. Bisher habe ich:

import numpy as np 
import matplotlib.pyplot as p 
p.imshow(data, interpolation=None) 
p.colorbar() 
p.show() 

Offensichtlich ist mein Problem, dass ich die Position meiner Punkte anpassen muss. Ich habe einige andere Posts durchsucht, aber mit dieser Form von Daten hat es nie geklappt. Auch ich habe versucht, dies durch einfaches Umformen der Daten, aber das hat nicht funktioniert aufgrund der unregelmäßigen Anzahl der Punkte

Wie ich neu hier bin ich auch gerne für Kommentare zur Verbesserung meiner Post (mehr Eingabe benötigt etc.) Vielen Dank im Voraus!

Antwort

1

Es gibt mehrere Lösungen für dieses Problem.

Wenn das, was Sie wollen einfach die Punkte als Marker mit einer gewissen Größe gezeigt zu haben, ist, mit Farben auf den Werten in dem z Array abhängig, dann ein Scatterplot wird gut tun. Wenn der Abstand zwischen den Punkten jedoch ebenfalls eingefärbt werden soll, verwenden Sie Interpolation und Konturierung. Glücklicherweise wurden diese Dinge auch in matplotlib für unregelmäßig beabstandete Daten implementiert (Daten auf einer "unstructured grid"), was Sie haben, da die Punkte nicht einfach auf ein reguläres Gitter abgebildet werden können (obwohl in dem kleinen Beispiel, das Sie dort angegeben haben scheint eine Tendenz für gleichgroße Dreiecke zu sein).

Hier sind 3 Beispiele, die die Funktionen veranschaulichen, die Sie weiter untersuchen können: plt.scatter, plt.tripcolor und plt.tricontourf. Ich habe das Dataset so erstellt, dass es etwas größer abgespielt wird, damit Sie ein Gefühl für die Funktion bekommen, die von z dargestellt wird.

x,y = (2*np.random.rand(50)-1 for _ in range(2)) 
z = np.exp(-x*x - y*y) - np.cos(x) # turtle-surface around origin 
f, ax = plt.subplots(1,3, sharex=True, sharey=True, num=2, subplot_kw={'xlim': (-1,1), 'ylim': (-1, 1)}) 

ax[0].scatter(x,y, s=500*(z-z.min()), c=z, cmap='hot') # scatterplot with variable-sized markers and colors 
ax[1].tripcolor(x, y, z, cmap='hot') # creates a tesselation and colors the formed triangles based on the values in the 3 nodes 
ax[2].tricontourf(x, y, z, cmap='hot') # estimates the underlying surface 

for indx in (1,2): 
    ax[indx].triplot(x,y, 'ko ') # add the locations of the points 
for axes in ax: # turn off the needless clutter 
    axes.tick_params(axis='both', which='both', bottom='off', left='off', labelbottom='off', labelleft='off') 
ax[0].set_title('scatter') 
ax[1].set_title('tripcolor') 
ax[2].set_title('tricontourf') 

illustration of plotting irregularly spaced (triangular) data

+0

Vielen Dank! Da Sie mir einige Optionen gegeben haben, hätte ich vielleicht besser klarstellen sollen, was ich will: Ich interessiere mich mehr für Ihren letzten Fall oder sogar für etwas, das die Farben ohne die Punkte zeigt. Selbst wenn ich einzelne Datenpunkte vermesse, ist die zugrundeliegende Theorie glatt. Also ich denke, ich könnte einfach überspringen Sie Ihre Zeile "# Fügen Sie die Standorte der Punkte", die ich so schnell wie möglich versuchen werde – Gretchen

+0

Allerdings habe ich beschlossen, mit der ersten Antwort zu gehen, es könnte nicht viel erklären, passt aber ein wenig besser und scheint sei einfacher. – Gretchen

Verwandte Themen