假设我有一个坐标网格,其中有几个点(质量)洒在网格中。我可以使用:
创建它import numpy as np
import matplotlib.pyplot as plt
points = np.array([[0,1],[2,1],[3,5]]) # array containing the coordinates of masses(points) in the form [x,y]
x1, y1 = zip(*points)
现在,我可以使用:
绘图plt.plot(x1,y1,'.')
现在,我说使用:
创建一个2D网格网格x = np.linspace(-10,10,10)
y = np.linspace(-10,10,10)
X,Y = np.meshgrid(x,y)
现在,我想要做的是创建一个二维数组'Z'(一个质量图),其中包含数组点中位置的质量。当我指群众时,我只是指那些点上的标量。所以我可以做一些像 plt.contourf(X,Y,Z)这样的事情。我遇到的问题是Z的索引不能与点中的坐标相同。必须有某种转换,我无法弄清楚。另一种看待它的方法是我想要:
Z[X,Y] = 1
我希望Z在数组 points 指定的位置有1个。所以问题的实质是如何计算X和Y指数,使它们对应于实际坐标中的x1,y1。
例如,如果我只做Z [x1(i),y1(i)] = 1,则contourf给出: 相反,我希望尖峰位于(0,1),(2,1),(3,5)。
答案 0 :(得分:1)
要在x1,y1和其他地方指定的坐标处有1,我会这样写:
x = np.linspace(-10, 10, 21)
y = np.linspace(-10, 10, 21)
Z = np.zeros((len(y), len(x)))
for i in range(len(x1)):
Z[10 + y1[i], 10 + x1[i]] = 1
然后你应该能够写plt.contourf(x, y, Z)
。
告诉我这是否能给你带来理想的结果。