用Python绘制网格

用Python绘制网格,python,grid,plot,Python,Grid,Plot,我正试图开始绘制流动网络的二维等高线图,但我无法正确显示初始网格 给定列数和行数,如何编写一个函数来绘制网格,以便显示给定范围内的所有点 我尝试通过以下方式绘制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'

我正试图开始绘制流动网络的二维等高线图,但我无法正确显示初始网格

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

我尝试通过以下方式绘制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)出现,因为我稍后需要从该点绘制向量,以指示流动网络的流动方向


对不起,我知道我的术语不是很好。有人知道如何进行此操作,以及如何使其适用于非正方形的网格吗?

前两个参数指定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()

前两个参数指定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()
  • 您可以使用来生成所需的点
  • 用于绘制点
  • 用于绘制向量场。(相关代码摘自)

  • 您可以使用来生成所需的点
  • 用于绘制点
  • 用于绘制向量场。(相关代码摘自)

给出:

[0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]
[0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2]
当您使用它绘制图形时,它会产生所需的结果

给出:

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

当你用它来绘制图形时,它会产生你想要的结果。

你不需要写
x=[i代表i在范围(c)]
,你可以写
x=range(c)
,谢谢你指出这一点。我之前做了很多工作,我想我有c=4.0和r=3.0,range()函数对float不起作用。如果有人知道如何解决这个问题的浮动,这将是伟大的太!当X向量为X轴值且Y向量为Y轴值时,绘图尝试绘制直线。两个向量的大小必须明显匹配。这可能不是您代码的期望输出。您不需要编写
x=[i for i in range(c)]
,您可以编写
x=range(c)
,谢谢您指出这一点。我之前做了很多工作,我想我有c=4.0和r=3.0,range()函数对float不起作用。如果有人知道如何解决这个问题的浮动,这将是伟大的太!当X向量为X轴值且Y向量为Y轴值时,绘图尝试绘制直线。两个向量的大小必须明显匹配。这可能不是您代码的期望输出。我相信Python 3.x用户会在“I/c”中使用双斜杠//来实现相同的结果。我相信Python 3.x用户会在“I/c”中使用双斜杠//来实现相同的结果。