2014-04-03 58 views
0

如何抓住pylab的兩幅半圓形圖形?我試過用pylab.hold(True),但它打開兩個不同的窗口,兩次調用我的圖形函數(我只需要在一個窗口中顯示圖形)。下面的代碼:如何抓住pylab.semilogy的數字?

EDIT1 - 這裏有更完整的代碼和名稱的修正用途:

(import pylab as pl) 

編輯2:我需要在兩個連續呼叫grafics堅持圖形功能: 調用圖形模塊中:

graphics(pet, SNR_dB) 
graphics(another_pet, SNR_dB) 

白衣一個pl.array和列表(具有相同的漁政),例如: (生成絲毫人氣指數(0,18))

SNR_dB: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17] 

和PE,在腳本另一個calcules生成:

Pe: [0.29576000000000002, 0.24626000000000001, 0.19703999999999999, 0.15298, 0.11018, 0.074139999999999998, 0.04616, 0.024400000000000002, 0.01204, 0.0050000000000000001, 0.0018600000000000001, 0.00040000000000000002, 4.0000000000000003e-05, 0.0, 0.0, 0.0, 0.0, 0.0] 
[0.16062000000000001, 0.13156000000000001, 0.10384, 0.079699999999999993, 0.056710000000000003, 0.037859999999999998, 0.023400000000000001, 0.01222, 0.0060400000000000002, 0.0025000000000000001, 0.00093000000000000005, 0.00020000000000000001, 2.0000000000000002e-05, 0.0, 0.0, 0.0, 0.0, 0.0] 

圖形功能是:

def graphics(Pe, SNR_dB): 

    pl.semilogy(SNR_dB, Pe[0],linewidth=1) 
    pl.hold(True) 
    pl.semilogy(SNR_dB, Pe[1],linewidth=2) 
    pl.legend(('Symbol', 'bit')) 

    pl.xlim([0, max(SNR_dB)]) 
    pl.ylim([1e-10,1]) 

    pl.title('Error vs SNR_dB') 
    pl.grid(True) 
    pl.xlabel('SNR_dB') 
    pl.ylabel('Pe') 
    pl.show() 

這兩個調用 「圖形」 生成兩個數字,一個用於每個呼叫。我只需要一個數字即可。我怎樣做?

+0

你可以擴展你的問題並解釋一下嗎?如果我用一些生成的數據使用你的代碼,那麼我得到一個明智的semilog情節,兩個情節在同一個情節(你似乎想要)。實際上,你甚至不需要叫'pl.hold(True)'將它們都放在同一個地塊上。 – Ffisegydd

+0

請注意,由於您的代碼當前站立,您將得到一個NameError,因爲您正在使用'pylab.show()'而不是'pl.show()'。當你將它複製到堆棧溢出窗口或修復此問題時,這是否是一個錯誤? – Ffisegydd

+0

@Ffisegydd我編輯了代碼 –

回答

0

[解決]

蒙山此編輯(我不使用數字或表演,直到兩次調用圖形)

graphics(pet, SNR_dB) 
graphics(another_pet, SNR_dB) 
pl.show() 

def graphics(Pe, SNR_dB): 

    pl.semilogy(SNR_dB, Pe[0],linewidth=1) 
    pl.semilogy(SNR_dB, Pe[1],linewidth=2) 
    pl.legend(('Symbol', 'bit')) 

    pl.xlim([0, max(SNR_dB)]) 
    pl.ylim([1e-10,1]) 

    pl.title('Error vs SNR_dB') 
    pl.grid(True) 
    pl.xlabel('SNR_dB') 
    pl.ylabel('Pe') 
0

避免pylab不惜一切代價(只對了一半誇張)

import matplotlib.pyplot as plt 
fig, ax = plt.subplots() 
ax.plot(SNR_dB, Pe_list[0],linewidth=1) 
ax.plot(SNR_dB, Pe_list[1],linewidth=2) 
ax.legend(('Symbol', 'bit')) 

ax.set_yscale('log') 
ax.set_xlim([0, max(SNR_dB)]) 
ax.set_ylim([1e-10,1]) 

ax.set_title('Error vs SNR_dB') 
ax.set_xlabel('SNR_dB') 
ax.set_ylabel('Pe') 

ax.grid(True) 

plt.show() 
+0

我需要用pylab解決。這是我在腳本中使用的模塊。 –

+1

@ eduardo.sufan'pylab'是'matplotlib'的模塊。換句話說,'pylab'和'pyplot'是* same *庫的兩個不同的接口。 –