Matplotlib и Numpy Histogram2D оси выпуска

Я изо всех сил пытаюсь получить правильную ось:

У меня есть x а также y значения, и хотите отобразить их на 2-й гистограмме (для изучения корреляции). Почему я получаю гистограмму с пределами от 0 до 9 по каждой оси? Как мне получить, чтобы показать фактические значения диапазонов?

Это минимальный пример, и я ожидаю увидеть красную "звезду" на (3, 3):

import numpy as np
import matplotlib.pyplot as plt

x = (1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 3)
y = (1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 3)
xedges = range(5)
yedges = range(5)
H, xedges, yedges = np.histogram2d(y, x)
im = plt.imshow(H, origin='low')
plt.show()

histogram2d

2 ответа

Решение

Я думаю, что проблема двоякая:

Во-первых, в вашей гистограмме должно быть 5 бинов (по умолчанию установлено 10):

H, xedges, yedges = np.histogram2d(y, x,bins=5)

Во-вторых, чтобы установить значения оси, вы можете использовать extent параметр, согласно histogram2d справочные страницы:

im = plt.imshow(H, interpolation=None, origin='low',
                extent=[xedges[0], xedges[-1], yedges[0], yedges[-1]])

Если я правильно понимаю, вам просто нужно установить interpolation='none'

import numpy as np
import matplotlib.pyplot as plt

x = (1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 3)
y = (1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 3)
xedges = range(5)
yedges = range(5)
H, xedges, yedges = np.histogram2d(y, x)
im = plt.imshow(H, origin='low', interpolation='none')

Это выглядит правильно?

Другие вопросы по тегам