Bagaimana saya bisa mengatur kisaran sumbu y dari subplot kedua menjadi misalnya [0,1000]? Plot FFT data saya (kolom dalam file teks) menghasilkan lonjakan (inf.?) Sehingga data aktual tidak terlihat.
pylab.ylim([0,1000])
sayangnya tidak berpengaruh. Ini adalah keseluruhan skrip:
# based on http://www.swharden.com/blog/2009-01-21-signal-filtering-with-python/
import numpy, scipy, pylab, random
xs = []
rawsignal = []
with open("test.dat", 'r') as f:
for line in f:
if line[0] != '#' and len(line) > 0:
xs.append( int( line.split()[0] ) )
rawsignal.append( int( line.split()[1] ) )
h, w = 3, 1
pylab.figure(figsize=(12,9))
pylab.subplots_adjust(hspace=.7)
pylab.subplot(h,w,1)
pylab.title("Signal")
pylab.plot(xs,rawsignal)
pylab.subplot(h,w,2)
pylab.title("FFT")
fft = scipy.fft(rawsignal)
#~ pylab.axis([None,None,0,1000])
pylab.ylim([0,1000])
pylab.plot(abs(fft))
pylab.savefig("SIG.png",dpi=200)
pylab.show()
Peningkatan lainnya juga dihargai!
python
range
axis
matplotlib
some one
sumber
sumber
Jawaban:
Seperti yang ditemukan di http://www.mofeel.net/582-comp-soft-sys-matlab/54166.aspx
Catatan: Perintah harus dieksekusi setelah plot!
sumber
plot()
, laluylim()
dan kemudiansavefig()
.Menggunakan objek kapak adalah pendekatan yang bagus untuk ini. Ini membantu jika Anda ingin berinteraksi dengan banyak gambar dan sub-plot. Untuk menambah dan memanipulasi objek sumbu secara langsung:
sumber
Terkadang Anda benar-benar ingin menetapkan batas sumbu sebelum Anda memplot data. Dalam hal ini, Anda dapat mengatur fitur "autoscaling" objek
Axes
atauAxesSubplot
. Fungsi bungaset_autoscale_on
,set_autoscalex_on
danset_autoscaley_on
.Dalam kasus Anda, Anda ingin membekukan batas sumbu y, tetapi biarkan sumbu x meluas untuk mengakomodasi data Anda. Karena itu, Anda ingin mengubah
autoscaley_on
properti menjadiFalse
. Berikut ini adalah versi modifikasi potongan subplot FFT dari kode Anda:sumber
Jika Anda tahu sumbu yang tepat yang Anda inginkan, maka
pylab.ylim([0,1000])
berfungsi seperti dijawab sebelumnya. Tetapi jika Anda ingin sumbu yang lebih fleksibel agar sesuai dengan data Anda, seperti yang saya lakukan ketika saya menemukan pertanyaan ini, maka atur batas sumbu menjadi panjang dataset Anda. Jika dataset Anda
fft
seperti dalam pertanyaan, tambahkan ini setelah perintah plot Anda:length = (len(fft)) pylab.ylim([0,length])
sumber
Jika Anda memiliki beberapa subplot, yaitu
Anda dapat menggunakan batas y yang sama untuk semuanya. Ia mendapat batas kapak y dari plot pertama.
sumber