2016-08-18 7 views
0

Ich möchte die Koordinatenlinien eines Koordinatensystems (z. B. kartesische Koordinaten) unter Verwendung von Matplotlib plotten.Zeichnen von Koordinatenlinien unter Verwendung von Matplotlib

Dann möchte ich sie mit einigen linearen Transformation (Skew, Skalieren, Drehen, etc.) transformieren, und ich möchte diese transformierte Version des Systems auch plotten.

Ich bin ziemlich neu zu Matplotlib und ich habe keine Ahnung, wie ich das tun könnte. Irgendwelche Vorschläge?

Etwas wie folgt aus:

enter image description here

Muss nicht wie oben auf dem gleichen Grundstück sein, ich will nur in der Lage sein, die Linien zu zeichnen (und Formen und ihre transformierten Versionen) .

EDIT: Wenn Sie stattdessen eine MATLAB-Lösung haben, nehme ich das auch.

+0

Haben Sie bisher einen Code? Möchten Sie, dass die tatsächlichen Plotachsen mit einer linearen Transformation (komplizierter) angezeigt werden oder einfach die transformierten Objekte auf der normalen Plot darstellen (einfach, wenden Sie einfach die entsprechende mathematische Formel auf die Punkte an)? – whrrgarbl

+0

Ich möchte auch ein Raster von Koordinatenlinien. Ich möchte zeigen, wie der "Raum" transformiert wird. – SilverSlash

Antwort

1

user2539738's answer zeigt, wie ein Gitter in einem Grundstück zu ziehen. Der nächste Schritt ist die Anwendung einer Transformation. Dies ist eine mathematische Operation, die als eine Funktion der x- und y-Koordinaten beschrieben werden kann. Zum Beispiel kann eine Scher-Transformation wie Ihr Beispiel Bilder -

def my_transform(x, y): 
    return (x+y/2, y) 

In diesem Sinne können Sie das transformierte Gitter plotten. Sie müssen einfach die neuen Koordinaten berechnen:

# Transformed grid 
for x in xx: 
    (x1, y1) = my_transform(x, min(yy)) 
    (x2, y2) = my_transform(x, max(yy)) 
    plt.plot([x1,x2],[y1,y2],color='r') 
for y in yy: 
    (x1, y1) = my_transform(min(xx), y) 
    (x2, y2) = my_transform(max(xx), y) 
    plt.plot([x1,x2],[y1,y2],color='r') 

Dies zeigt das transformierte Gitter in rot. Die ersten For-Loop-Plots waren die vertikalen Linien des Gitters (vom Punkt x, min(yy) zu x, max(yy)), und der zweite plottet die horizontalen Linien. Die Transformationsfunktion wird auf die ursprünglichen Punktepaare angewendet, um die neuen Endpunkte der transformierten Linie zu berechnen.

+0

Vielen Dank! Dies ist perfekt. – SilverSlash

1

Dies sollten Sie

auf dem richtigen Weg begonnen
import matplotlib 

import matplotlib.pyplot as plt 

xx = range(10) 
yy = range(10) 
[plt.plot([x,x],[min(yy),max(yy)],color='k') for x in xx] 
[plt.plot([min(xx),max(xx)],[y,y],color='k') for y in yy] 
Verwandte Themen