2015-07-03 30 views
9

2000 sütun ve 200000 satır içeren bir matrisi çizmeye çalışıyorum. Matris daha fazla satır my_matrix eklendiğinde sütunlar şekilde daha satır olduğunda olarakPython grafiği Matplotlib kullanarak büyük matris

matshow(my_matrix) 
show() 

Ancak, figür çok dar olur kullanarak küçük olduğunda ben böylece kaybetme, ihracat matrix figürü cezası arsa test etmek ve test edebilirsiniz Yakınlaştırırken hassaslık. Matris rakamını kaydırılabilir yapabilir miyim? Eğer değilse, bu matrisin hassasiyetini kaybetmeden nasıl görselleştirebilirim?

Ayrıca çok fazla hassasiyet kaybetmeden görüntüyü kaydetmek için savefig ('dosyaadı', dpi = 300) 'i çağırmayı denedim, ancak matris büyük olduğunda MemoryError'u atar. Çok teşekkürler!

+2

Gereksinimleriniz için çok basit olabilir, ancak büyük matrisinizi parçalara ayırmayı denediniz mi ve sonra bunlardan her birinde matshow'u çağırdınız mı? – lesnikow

+7

'ax.set_aspect ('auto')', yönlendirme sorununu düzeltir, ancak pikselleriniz dikdörtgenler değil kareler olur. 2k x 150k ile işleri yaptım, ama mpl'nin yapabildiği sınırlara basmaya başlıyor (C++ rasterizasyon kodunda bazı kodlanmış 32 bit tam sayı var). – tacaswell

+0

@tcaswell matshow() bir AxesImage döndürür. Set_aspect() işlevinin yalnızca Axes nesnesi için erişilebilir olduğuna inanıyorum. AxesImage'dan Axes nesnesini nasıl alacağımı bilmiyorum. – emily

cevap

1

@tcaswell ve @ lesnikow'un önerilerini bir araya getirdim.

düzgün oto boy oranını ayarlamak için mevcut eksenlerini alın, ben de küçük matrisleri içine matrisi bölünmüş:

import matplotlib.pylab as plt 

    for j in range(lower_bound_on_rows, upper_bound_on_rows): nums.append(j) 
    partial_matrix = my_matrix[nums, :] 

    plt.matshow(partial_matrix, fignum=100) 
    plt.gca().set_aspect('auto') 
    plt.savefig('filename.png', dpi=600) 

Benim matris uzun dikey, yani satırlar tarafından dilimlenmiş ve daha küçük tüm sütunları korunmuş matrisler. Matrisiniz yatay olarak uzunsa, indeksi bu gibi döndürün my_matrix [:, nums]