我正在尝试为流网启动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()
Run Code Online (Sandbox Code Playgroud)
并得到此错误:
'ValueError: x and y must have same first dimension'
Run Code Online (Sandbox Code Playgroud)
所以我尝试在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)出现,因为我稍后需要从这一点绘制向量,指示流网的流向.
对不起,我知道我的术语不是很好.有谁知道如何做到这一点,以及如何让它适用于不正方形的网格?
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()
Run Code Online (Sandbox Code Playgroud)
