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()
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')
Это выглядит правильно?