在Python中绘制网格

时间:2012-03-29 10:16:11

标签: python grid plot

我正在尝试为流网启动2D轮廓图,但我无法正确显示初始网格。

考虑到列数和行数,如何编写一个绘制网格的函数,以便显示给定范围内的所有点?

我尝试通过这样做来绘制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)出现,因为我稍后需要从这一点绘制矢量,指示我的流网的流动方向。

抱歉,我知道我的术语不太好。有谁知道如何做到这一点,以及如何让它适用于不正方形的网格?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:3)

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 :(得分: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()