2016-08-18 175 views
0

我要繪製使用matplotlib的座標系統的座標系(例如笛卡爾共ORDS)。繪製座標線使用Matplotlib

然後我想用一些線性變換(傾斜,縮放,旋轉等)改造他們,我要繪製系統的這一轉換後的版本,以及。

我很新的matplotlib,我不知道,我怎麼會去這樣做。有什麼建議麼?

事情是這樣的:

enter image description here

不必在同一個情節如上,我只是希望能夠繪製線(和形狀以及它們的轉換版本,以及) 。

編輯:如果你不是有一個MATLAB的解決方案,我承擔了太多。

+0

到目前爲止您有任何代碼嗎?你是否希望用線性變換(更復雜)來顯示實際的座標軸,或者只是將變換後的對象繪製在法線圖上(簡單,只需將適當的數學公式應用於點)? – whrrgarbl

+0

我想要一個座標線的網格。我想說明'空間'是如何轉變的。 – SilverSlash

回答

1

user2539738's answer演示瞭如何在一個情節畫一個網格。下一步是應用變換。這是一個數學運算,可以描述爲x和y座標的函數。例如,剪切轉換就像您的示例圖像 -

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

考慮到這一點,您可以繪製轉換後的網格。您只需計算新的座標:

# 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') 

這將變換後的網格繪製爲紅色。第一個循環繪製了網格的垂直線(從點x, min(yy)x, max(yy)),第二個繪製了水平線。變換函數應用於原始點對以計算變換線的新端點。

+0

非常感謝!太棒了。 – SilverSlash

1

這應該讓你開始步入正軌

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]