2012-03-29 139 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