用numpy填充网格

时间:2020-10-19 15:19:26

标签: python python-3.x numpy plot

我想实现以下目标。我有一个x-y图,函数y取决于x。该图由正方形网格组成。当功能点位于功能块内部时,该块会更改颜色。我附了一个例子:

enter image description here

我想制作一个相似的图形,但我希望能够制作gridsize变量。

我知道如何使用plt.plot()绘制图,但是如果功能点落在正方形中,我并不熟悉制作网格并填充该网格。有人可以引用可以帮助您的numpy或mathplotlib函数吗?

谢谢

2 个答案:

答案 0 :(得分:2)

这是一段代码,适用于以(min(X)-max(X))和(min(Y),max(Y))为中心的图形:

import numpy as np

def grid_plot(X,Y,resx,resy) :
 d_x=resx/(np.max(X)-np.min(X))
 d_y=resy/(np.max(Y)-np.min(Y))
 mat=np.zeros((resy,resx))
 for i in range(len(X)) :
    mat[int((Y[i]-np.min(Y))*d_y),resx-int((X[i]-np.min(X))*d_x)]=1
 return mat

答案 1 :(得分:1)

您可以使用np.histogram2d创建2D直方图,并使用imshow绘制计数大于零的位置:

import numpy as np
import matplotlib.pyplot as plt

# Input data
x = np.linspace(-2, 2, 300)
y = np.sin(x)
# Plot limits
x_min, x_max = -3, 3
y_min, y_max = -2, 2

plt.figure(figsize=(8, 3))
# First plot
resolution = 25
xg = np.linspace(x_min, x_max, resolution)
yg = np.linspace(y_min, y_max, resolution)
h, _, _ = np.histogram2d(x, y, (xg, yg))
plt.subplot(121)
# Transpose because imshow swaps X and Y axes
plt.imshow(h.T > 0, origin='lower', extent=(xg[0], xg[-1], yg[0], yg[-1]))
# Show grid
plt.gca().set_xticks([], minor=False)
plt.gca().set_xticks(xg, minor=True)
plt.gca().set_yticks([], minor=False)
plt.gca().set_yticks(yg, minor=True)
plt.grid(True, 'minor')
# Second plot
resolution = 50
xg = np.linspace(x_min, x_max, resolution)
yg = np.linspace(y_min, y_max, resolution)
h, _, _ = np.histogram2d(x, y, (xg, yg))
plt.subplot(122)
plt.imshow(h.T > 0, origin='lower', extent=(xg[0], xg[-1], yg[0], yg[-1]))
plt.gca().set_xticks([], minor=False)
plt.gca().set_xticks(xg, minor=True)
plt.gca().set_yticks([], minor=False)
plt.gca().set_yticks(yg, minor=True)
plt.grid(True, 'minor')
# Show plot
plt.tight_layout()
plt.show()

结果:

Result plot

相关问题