Изменение осей на графике цветовой шкалы matplotlib 2D-массива - PullRequest
7 голосов
/ 07 июня 2011

У меня есть двумерный массив, который я хочу построить на цветовой шкале.У меня проблемы с изменением оси, чтобы они отображали мой набор данных.Вертикальная ось понижается с 0 до 100, тогда как я хочу, чтобы она поднималась с 0,0 до 0,1.Поэтому мне нужно сделать две вещи:

  • Перевернуть массив с помощью np.flipud (), а затем «перевернуть» и ось
  • Измените метки, чтобы перейти от 0,0 до 0,1вместо 0 до 100

Вот пример того, как мой график цветовой шкалы выглядит в настоящее время: Example of Colorbar plot

А вот код:

data = np.load('scorr.npy')
(x,y) = np.unravel_index(data.argmax(), data.shape)
max=data[x][y]

fig = plt.figure()
ax = fig.add_subplot(111)
cax = ax.imshow(data, interpolation='nearest')
cbar = fig.colorbar(cax, ticks=[-max, 0, max])
cbar.ax.set_yticklabels([str(-max), '0', str(max)])
plt.show()

У кого-нибудь есть предложения?Заранее спасибо!

Ответы [ 2 ]

9 голосов
/ 07 июня 2011

Вы хотите посмотреть на опции imshow "происхождение" и "степень", я думаю.

import matplotlib.pyplot as plt
import numpy as np

x,y = np.mgrid[-2:2:0.1, -2:2:0.1]
data = np.sin(x)*(y+1.05**(x*np.floor(y))) + 1/(abs(x-y)+0.01)*0.03

fig = plt.figure()
ax = fig.add_subplot(111)
ticks_at = [-abs(data).max(), 0, abs(data).max()]
cax = ax.imshow(data, interpolation='nearest', 
                origin='lower', extent=[0.0, 0.1, 0.0, 0.1],
                vmin=ticks_at[0], vmax=ticks_at[-1])
cbar = fig.colorbar(cax,ticks=ticks_at,format='%1.2g')
fig.savefig('out.png')

extent and origin

0 голосов
/ 07 июня 2011

Единственный способ, которым я знаю, чтобы изменить метки осей на графике изображения, это ручная маркировка ... Если у кого-то есть более чистый метод, я бы с удовольствием его изучил.

ax.yaxis.set_ticks(np.arange(0,100,10))
ax.yaxis.set_ticklabels(['%.2f' % 0.1/100*i for i in np.arange(0,100,10)]) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...