2016-01-19 2 views
0

Я использую python и хочу сделать карту памяти с 1900 по 2000 по оси x. Итак, у меня есть двумерная функция, скажем, f (t, x), где t находится между 1900 и 2000 годами. Тогда я определяю g (x) = [f (t, x) для t в диапазоне (1900,2000)] и поместите все в массив по z = numpy.array ([g (x) для x в диапазоне (50)]). Затем я рисую тепловую карту pylab.color (z), но затем я теряю свою зависимость от лет, потому что теперь она находится в массиве, который начинается с нуля. Затем ось x равна от 0 до 100. Как добавить 1900 к оси x, а не в метку, но чтобы диапазон стал 1900-2000. Заранее спасибо.Добавление константы к оси x

+1

Пожалуйста, поделитесь некоторым кодом, чтобы выяснить, что вы делаете. Рабочий образец также поможет. – mauve

+1

Можете ли вы предоставить [MCVE] (// stackoverflow.com/help/mcve)? – tom

+0

Это достаточно хорошо? – Henry

ответ

1

Если вы используете pcolormesh (или pcolor, но pcolormesh быстрее), вам необходимо пройти в явном x и y массивов, а также в качестве z массива.

Если вы используете imshow, вам необходимо использовать extent kwarg.

В качестве примера использования pcolormesh или pcolor:

import numpy as np 
import matplotlib.pyplot as plt 

z = np.arange(40).reshape(4, 10) 
x = np.linspace(1900, 2000, 10) 
y = np.linspace(20, 50, 4) 

fig, ax = plt.subplots() 
ax.pcolormesh(x, y, z, cmap='gist_earth') 
plt.show() 

enter image description here

В качестве примера использования imshow (Обратите внимание, что вы должны были бы использовать aspect='auto', а также сделать imshow и pcolormesh матч точно):

import numpy as np 
import matplotlib.pyplot as plt 

z = np.arange(40).reshape(4, 10) 
x = np.linspace(1900, 2000, 10) 
y = np.linspace(20, 50, 4) 

fig, ax = plt.subplots() 
ax.imshow(z, cmap='gist_earth', interpolation='nearest', origin='lower', 
      extent=[x.min(), x.max(), y.min(), y.max()]) 
plt.show() 

enter image description here

+0

Теперь у меня есть белые пробелы справа и сверху. В предыдущем случае (с 0-100 по оси x) я стер его plt.gca(). Set_xlim ((0,100)), однако в этом случае это не работает. – Henry

+0

@Henry - Как правило, вы должны использовать 'ax.axis ('tight')', чтобы установить пределы осей в диапазон данных. Тем не менее, в зависимости от того, что вы делаете, может иметь смысл сделать это другими способами. Например, 'ax.margins (some_percentage)', чтобы добавить бит к границам, 'ax.set (xlim = [xmin, xmax], ylim = [ymin, ymax])', чтобы вручную установить пределы, ' ax.axis ('image') 'использовать' imshow'-подобные оси и некоторые другие. –

+0

Спасибо за помощь! – Henry

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