2011-06-07 19 views
7

Bir colorbar'da çizmek istediğim 2B bir numpy dizilim var. Veri kümemi görüntülemek için ekseni değiştirme konusunda sorun yaşıyorum. Dikey eksen 0'dan 100'e kadar iner, oysa onu 0,0'dan 0,1'e kadar yükseltmek istiyorum. Bu yüzden iki şey yapmak gerekir:2B dizisinin matplotlib colorbar grafiğinde eksenleri değiştirme

  • yerine 0 ile 100 arasında, 0,0 0,1 gitmek
  • değiştirin yanı etiketleri eksenini np.flipud() ve ardından 'çevirme' kullanarak diziyi çevirin İşte

benim Colorbar arsa şu anda neye benzediğini bir örnek: Example of Colorbar plot

Ve burada kodudur:

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() 

Herhangi bir önerisi olan var mı? Şimdiden teşekkürler!

cevap

9

"Kök" ve "kapsam" seçeneklerine bakmak istersiniz, bence.

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

Görüntü grafiğinde eksen etiketlerini değiştirmeyi bildiğim tek yol elle etiketleme ... Birisi daha temiz bir yönteme sahipse bunu öğrenmek isterim.

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)]) 
İlgili konular