Ich benutze den LinearNDInterpolator für einige (x, y, z) Daten mit dem folgenden Skript. Ich kann jedoch nicht herausfinden, wie man von den interpolierten Daten zur Darstellung/Darstellung der Interpolation in Heatmap-Form geht? Fehle ich etwas wie das Einrichten eines Meshgrid basierend auf dem Minimum und Maximum von x und y? Jede Hilfe oder ein Beispiel wäre großartig!Plotten interpolierter Werte mit LinearNDInterpolator (Python)
import numpy as np
import scipy.interpolate
x = np.array([-4386795.73911443, -1239996.25110694, -3974316.43669208,
1560260.49911342, 4977361.53694849, -1996458.01768192,
5888021.46423068, 2969439.36068243, 562498.56468588,
4940040.00457585])
y = np.array([ -572081.11495993, -5663387.07621326, 3841976.34982795,
3761230.61316845, -942281.80271223, 5414546.28275767,
1320445.40098735, -4234503.89305636, 4621185.12249923,
1172328.8107458 ])
z = np.array([ 4579159.6898615 , 2649940.2481702 , 3171358.81564312,
4892740.54647532, 3862475.79651847, 2707177.605241 ,
2059175.83411223, 3720138.47529587, 4345385.04025412,
3847493.83999694])
# Create coordinate pairs
cartcoord = zip(x, y)
# Interpolate
interp = scipy.interpolate.LinearNDInterpolator(cartcoord, z)
Edit: Basierend auf @ Spinor-Lösung und mit Python 2.7, der folgende Code gibt mir, was ich suche (Ansatz 1). Gibt es eine Möglichkeit, meine Dichte der interpolierten Punkte zu erhöhen?
Der Datensatz liefert die folgende Handlung:
Unnötig zu sagen, ich nicht die Ergebnisse kreisförmig sein erwartet hatte, da der (lat, lon) Koordinaten von einem equirectrangular Projektionskarte getroffen werden. Bei weiteren Untersuchungen denke ich, dass dies einfach auf eine different projection abgebildet wird.
Tolle Lösung, komplett mit einem Beispiel und Beispielcode! Vielen Dank! Ich bearbeite meine Frage, um meine aktuellen Ergebnisse basierend auf @ Spinors Lösung zu integrieren, da es sich um eine Erweiterung desselben Themas handelt. – AaronJPung
Um die Dichte zu erhöhen, ändern Sie die Funktion linspace in X = np.linspace (min (x), max (x), num = 100) und tun dies auch für Y. – Spinor8