2012-03-29 135 views
1

我試圖啓動2D等高線圖的流淨,我遇到了麻煩初始電網正常顯示。繪圖網格在Python

鑑於列數和行數,我怎麼能寫,將繪製一個網格,以便在給定的所有點範圍出現的功能?

我試圖這樣做,繪製了4列3行分:

r = 3 

c = 4 

x = [i for i in range(c)] 

y = [i for i in range(r)] 

plot(x,y,'ro') 

grid() 

show() 

,並得到這個錯誤:

'ValueError: x and y must have same first dimension' 

所以我想一個4x4網格測試,並得到這個和我接近我想要的東西,但它只能繪製點(0,0),(1,1),(2,2)和(3,3)

不過,我也想分( (0,0),(1,0),(2,0),(3,0),(1,0),(1,1)...(3,2),(3,3) ,像我一樣稍後需要繪製這個點的向量,表明我的流量網絡的流向。

對不起,我知道我的術語是不是很大。有誰知道如何做到這一點,以及如何使它適用於不方形的網格?

+0

不需要寫'X = [I爲i的範圍(C)]',可以編寫'X =範圍(C)' – YXD 2012-03-29 10:20:02

+0

感謝指出了這一點。我事先做了很多工作,我認爲我有c = 4.0和r = 3.0,range()函數不適用於浮點數。如果有人知道如何解決這個問題,漂浮也會很棒! – bang 2012-03-29 10:27:33

+0

當X向量是x軸值且Y向量是y軸值時,您的圖會嘗試繪製一條線。這兩個向量的大小必須明顯匹配。這可能不是您的代碼所需的輸出。 – Fenikso 2012-03-29 10:32:20

回答

2
r = 3 
c = 4 

x = [i % c for i in range(r*c)] 
y = [i/c for i in range(r*c)] 

print x 
print y 

給出:

[0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3] 
[0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2] 

當用作你沒有產生期望的結果繪製曲線圖。

2

前兩個參數指定x和y分量。所以點的數量必須匹配。我想你想的是一樣的東西:

from itertools import product 
import matplotlib.pyplot as plt 

points = np.array(list(product(range(3),range(4)))) 

plt.plot(points[:,0],points[:,1],'ro') 
plt.show() 
6

import numpy as np 
import matplotlib.pyplot as plt 
import itertools 
r = 3 
c = 4 
x = np.linspace(0, c, c+1) 
y = np.linspace(0, r, r+1) 

pts = itertools.product(x, y) 
plt.scatter(*zip(*pts), marker='o', s=30, color='red') 

X, Y = np.meshgrid(x, y) 
deg = np.arctan(Y**3 - 3*Y-X) 
QP = plt.quiver(X, Y, np.cos(deg), np.sin(deg)) 
plt.grid() 
plt.show() 

enter image description here