Проблема с масштабированием осей при применении фильтра к plt.imshow - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь применить гауссов фильтр к 2-й гистограмме, но шкала y не подходит должным образом, когда я использую свои входные данные.

Если я запускаю примерный набор данных, он работает нормально. Это пример использования случайных данных.

import matplotlib.pyplot as plt
import random
import numpy as np

x = random.sample(range(80), 10)
y = random.sample(range(80), 10)

fig, ax = plt.subplots()
plt.scatter(x,y)
z,x,y,p = plt.hist2d(x,y, bins = 40, range = np.array([(0, 80), (0, 80)]))
plt.imshow(z.T, interpolation = 'gaussian', origin = 'lower', cmap = 'jet', extent = [0,80,0,80])

Выход: enter image description here

Однако, когда я пытаюсь сгенерировать тот же график из моих входных данных, он не работает. Смотри ниже.

x = [29160, 30420, 30840, 31680, 31920, 32040, 33000, 33300, 33480, 34200]
y = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

fig, ax = plt.subplots()
plt.scatter(x,y)
z,x,y,p = plt.hist2d(x,y, bins = 40, range = np.array([(29000, 35000), (0, 10)]))
plt.imshow(z.T, interpolation = 'gaussian', origin = 'lower', cmap = 'jet', extent = [29000,35000,0,10])

enter image description here

1 Ответ

0 голосов
/ 16 мая 2018

Посмотрите документацию. https://matplotlib.org/api/_as_gen/matplotlib.pyplot.imshow.html

используйте aspect='auto' и подходящую интерполяцию в вашей функции plt.imshow(). Поскольку ваш аспект изображения очень искажен, вы хотите изменить его масштаб до размера оси.

...