#python #matplotlib #histogram
#python #matplotlib #гистограмма
Вопрос:
У меня есть следующий код, который отображает точки, а затем отображает гистограмму:
# Produce a number of points in x-y from 1 distribution.
mean = [3,4]
cov = [[3,1],[1,3]]
x,y = np.random.multivariate_normal(mean,cov,1000).T
plt.plot(x,y,'x'); plt.axis('equal'); plt.show()
Z = np.array([x,y])
# Produce 2D histogram projection
H,xedges,yedges = np.histogram2d(x,y,10,normed=False)
X,Y = np.meshgrid(xedges,yedges)
plt.imshow(H)
plt.grid(True)
Я просто хочу, чтобы гистограмма в imshow () была более блочной, а не настолько нечеткой, чтобы плотность в каждой квадратной ячейке была более четкой. Я не уверен, как это сделать.
Ответ №1:
Итак, ваш исходный код будет выглядеть следующим образом
из matplotlib импортируйте pyplot как plt импортируйте numpy как np
# Produce a number of points in x-y from 1 distribution.
mean = [3,4]
cov = [[3,1],[1,3]]
x,y = np.random.multivariate_normal(mean,cov,1000).T
plt.plot(x,y,'x'); plt.axis('equal'); plt.show()
Z = np.array([x,y])
# Produce 2D histogram projection
H,xedges,yedges = np.histogram2d(x,y,10,normed=False)
X,Y = np.meshgrid(xedges,yedges)
plt.imshow(H)
plt.grid(True)
И вы хотите что-то подобное, если я правильно понимаю «blockier»!?
plt.hist2d(x, y, bins=40)
plt.colorbar()
plt.show()
Ответ №2:
Вы можете просто установить метод интерполяции, который imshow
использует:
plt.imshow(H, interpolation = 'none')
Вот пример, показывающий различные методы интерполяции, а в документах перечислены все реализованные методы.