Python Pylab opcje kolorów dla wykresów jakości publikacji
Próbuję tworzyć wykresy DFT (dyskretne transformaty Fouriera) za pomocąpcolor
w Pythonie. Do tej pory korzystałem z Mathematica 8.0, ale stwierdzam, że pasek kolorów w matematyce 8.0 ma słabą korelację jeden-do-jednego z danymi, które próbuję reprezentować. Oto na przykład dane, które planuję:
[[0.,0.,0.10664,0.,0.,0.,0.0412719,0.,0.,0.],
[0.,0.351894,0.,0.17873,0.,0.,0.,0.,0.,0.],
[0.10663,0.,0.178183,0.,0.,0.,0.0405148,0.,0.,0.],
[0.,0.177586,0.,0.,0.,0.0500377,0.,0.,0.,0.],
[0.,0.,0.,0.,0.0588906,0.,0.,0.,0.,0.],
[0.,0.,0.,0.0493811,0.,0.,0.,0.,0.,0.],
[0.0397341,0.,0.0399249,0.,0.,0.,0.,0.,0.,0.],
[0.,0.,0.,0.,0.,0.,0.,0.,0.,0.],
[0.,0.,0.,0.,0.,0.,0.,0.,0.,0.],
[0.,0.,0.,0.,0.,0.,0.,0.,0.,0.]]
Tak więc, wiele zer lub małych liczb w matrycy DFT lub niewielka ilość energii wysokiej częstotliwości.
Kiedy wykreślam to za pomocą matematyki, jest to wynik:
Pasek kolorów jest wyłączony i pomyślałem, że chciałbym to narysować za pomocą pythona. Mój kod Pythona (z którego przejąłemtutaj) jest:
from numpy import corrcoef, sum, log, arange
from numpy.random import rand
#from pylab import pcolor, show, colorbar, xticks, yticks
from pylab import *
data = np.array([[0.,0.,0.10664,0.,0.,0.,0.0412719,0.,0.,0.],
[0.,0.351894,0.,0.17873,0.,0.,0.,0.,0.,0.],
[0.10663,0.,0.178183,0.,0.,0.,0.0405148,0.,0.,0.],
[0.,0.177586,0.,0.,0.,0.0500377,0.,0.,0.,0.],
[0.,0.,0.,0.,0.0588906,0.,0.,0.,0.,0.],
[0.,0.,0.,0.0493811,0.,0.,0.,0.,0.,0.],
[0.0397341,0.,0.0399249,0.,0.,0.,0.,0.,0.,0.],
[0.,0.,0.,0.,0.,0.,0.,0.,0.,0.],
[0.,0.,0.,0.,0.,0.,0.,0.,0.,0.],
[0.,0.,0.,0.,0.,0.,0.,0.,0.,0.]], np.float)
pcolor(data)
colorbar()
yticks(arange(0.5,10.5),range(0,10))
xticks(arange(0.5,10.5),range(0,10))
#show()
savefig('/home/mydir/foo.eps',figsize=(4,4),dpi=100)
I ten kod Pythona rysuje jako:
Oto moje pytanie / lista pytań: lubię, jak python to knuje i chciałbym użyć tego, ale ...
Jak sprawić, by wszystkie „niebieskie”, które reprezentują „0”, zniknęły, tak jak w moim wykresie matematycznym?Jak obrócić fabułę, aby uzyskać jasne czerwone miejsce w lewym górnym rogu?Czy sposób ustawiania „dpi” jest prawidłowy?Jakieś przydatne referencje, których powinienem użyć, aby wzmocnić moją miłość do Pythona?Przejrzałem inne pytania tutaj i instrukcję obsługi numpy, ale nie znalazłem zbyt wiele pomocy.
Mam zamiar opublikować te dane i to jest bardzo ważne, że dostaję wszystkie elementy!:)
Zmodyfikowany kod Pythona i wynikowy wykres! Jakie usprawnienia można by temu zaproponować, aby publikacja była godna?
from numpy import corrcoef, sum, log, arange, save
from numpy.random import rand
from pylab import *
data = np.array([[0.,0.,0.10664,0.,0.,0.,0.0412719,0.,0.,0.],
[0.,0.351894,0.,0.17873,0.,0.,0.,0.,0.,0.],
[0.10663,0.,0.178183,0.,0.,0.,0.0405148,0.,0.,0.],
[0.,0.177586,0.,0.,0.,0.0500377,0.,0.,0.,0.],
[0.,0.,0.,0.,0.0588906,0.,0.,0.,0.,0.],
[0.,0.,0.,0.0493811,0.,0.,0.,0.,0.,0.],
[0.0397341,0.,0.0399249,0.,0.,0.,0.,0.,0.,0.],
[0.,0.,0.,0.,0.,0.,0.,0.,0.,0.],
[0.,0.,0.,0.,0.,0.,0.,0.,0.,0.],
[0.,0.,0.,0.,0.,0.,0.,0.,0.,0.]], np.float)
v1 = abs(data).max()
v2 = abs(data).min()
pcolor(data, cmap="binary")
colorbar()
#xlabel("X", fontsize=12, fontweight="bold")
#ylabel("Y", fontsize=12, fontweight="bold")
xticks(arange(0.5,10.5),range(0,10),fontsize=19)
yticks(arange(0.5,10.5),range(0,10),fontsize=19)
axis([0,7,0,7])
#show()
savefig('/home/mydir/Desktop/py_dft.eps',figsize=(4,4),dpi=600)