2015-10-20 2 views
1

У меня есть ряд данных координат (широта и долгота).Matplotlib heatmap автоматически поворачивает изображение

Мне удалось создать приятную теплоизоляцию из графика рассеяния точек, но сюжет, похоже, повернут на 90 градусов вправо ... Я не могу понять, почему это происходит.

import numpy as np 
import numpy.random 
import matplotlib.pyplot as plt 
plt.style.use('ggplot') 

x = coords.longtitude 
y = coords.latitude 

heatmap, xedges, yedges = np.histogram2d(x, y, bins=30) 
extent = [xedges[0], xedges[-1], yedges[0], yedges[-1]] 

plt.imshow(heatmap, extent=extent) 
plt.show(p) 

Это результат: enter image description here

Проницательный можно увидеть изображение Нидерландов ... Только повернуты.

+0

Вы не хватает импорт для координатам, если ваш код должен быть воспроизведен ... – Jblasco

+0

@Jblasco координат содержат конфиденциальные данные, поэтому я не могу показать их, к сожалению. Это панда данных. – Tim

+0

Я вижу. Я думал, вы читаете какую-то публичную библиотеку. В подобных случаях некоторые люди создают минимальный пример с поддельным набором данных, например, создавая массивы с помощью numpy.random. – Jblasco

ответ

2

Как предложил Jblasco, здесь приведен минимальный рабочий пример с поддельными данными.

import numpy as np 
import numpy.random 
import matplotlib.pyplot as plt 
p = plt.figure() 
plt.style.use('ggplot') 

np.random.seed(0) 
x = np.random.rand(50) 
y = np.random.rand(50) 

heatmap, xedges, yedges = np.histogram2d(x, y, bins=4) 
extent = [xedges[0], xedges[-1], yedges[0], yedges[-1]] 

plt.imshow(heatmap, extent=extent) 
plt.show(p) 

И вот оба изображения с np.histogram2d(x, y, bins=30) и np.histogram2d(y, x, bins=30)

, который, конечно, поворачивает изображение (на самом деле, он переставляет изображение). Таким образом, я не понимаю вашу проблему. enter image description here enter image description here

+0

Ах, но это действительно работает. Обратите внимание на тонкую разницу между «heatmap, yedges, xedges = np.histogram2d (y, x, bins = 30)» и «np.histogram2d (y, x, bins = 30)». Один переносит все данные, второй - только гистограмму. – Tim

+0

Да, у меня топоры ошибаются, извините. Шляпы на @Emiliien за фальсификацию данных, чтобы показать это. – Jblasco

0

От the documentation of numpy.histogram2D

Би-мерной гистограммы из образцов х и у. Значения в x гистограммируются вдоль первого измерения, а значения в y гистограммируются вдоль второго измерения.

Что именно противоположно тому, что делает matplotlib, где первая ось является вертикальной. Я предлагаю вам транспонировать x и y при создании тепловой карты.

+0

Пробовал это несколько раз, но не смог получить ничего полезного. – Tim

+0

Можете ли вы уточнить? Что не получается хорошо, если вы делаете: heatmap, yedges, xedges = np.histogram2d (y, x, bins = 30) – Jblasco

+0

Форма еще более неузнаваема :) – Tim

Смежные вопросы