2017-03-01 225 views
1

參考此鏈接:https://aqibsaeed.github.io/2016-09-03-urban-sound-classification-part-1/,我試圖做出同樣的波紋圖,但是,我得到了如下圖:Waveplot如何使用matplotlib使用librosa很好地顯示波浪圖

我運行這些蟒蛇代碼:

def plot_waves(sound_names, raw_sounds): 
    i = 1 
    fig = plt.figure() 
    for n, f in zip(sound_names, raw_sounds): 
     plt.subplot(10, 1, i) 
     librosa.display.waveplot(np.array(f), sr=22050) 
     plt.title(n.title()) 
     i += 1 
    plt.suptitle("Figure 1: Waveplot", x=0.5, y=0.915, fontsize=18) 
    plt.show() 

任何想法如何改進以達到相同的圖所示的鏈接?謝謝。

回答

1

從您發佈的鏈接,該plot_waves功能如下複製。

注意figsizedpi參數傳遞給plt.figurefigsize=(25,60)指定圖的(寬度,高度)。 dpi當然指定了分辨率。使用這些參數將增加您的身材尺寸並解決似乎是問題的「擠壓」外觀。

因爲你的身材標題重疊的第一軸標題,你還需要爲標題的plt.suptitle位置指定參數。不是plt.suptitle中的xy值分別是左側和底部圖像大小的分數。所以x=0.5水平地指定了圖中間的標題位置,並且y=0.915從圖的底部指定了總高度的91.5%的垂直位置。

,直到你得到一個陰謀,看起來你的權利總覺得這些設置玩。

def plot_waves(sound_names, raw_sounds): 
    i = 1 
    fig = plt.figure(figsize=(25,60), dpi = 900) 
    for n,f in zip(sound_names,raw_sounds): 
     plt.subplot(10,1,i) 
     librosa.display.waveplot(np.array(f),sr=22050) 
     plt.title(n.title()) 
     i += 1 
    plt.suptitle("Figure 1: Waveplot",x=0.5, y=0.915,fontsize=18) 
    plt.show() 
+0

我不採取樣本代碼特別是對於圖= plt.figure(figsize =(25,60),DPI = 900),因爲,它拋出異常:_tkinter.TclError:對於沒有足夠的可用存儲器圖像緩衝區。對我來說有兩個問題:1)。 suptitle壓扁的樣子。 2)小區的數字相互重疊。無法嘗試找出合適的參數。 –

+0

嘗試擺脫'dpi = 900'參數並使用'fig = plt.figure(figsize =(25,60))'代替。這聽起來像是你試圖爲你的機器加載過多的內存,如果你只是想看看屏幕上的圖像,dpi設置是不重要的。問題(1)將通過調整「plt.suptitle」中的y位置來解決,如上所述。如果'y = 0.915'不起作用,請嘗試'y = 0.93'等等。問題(2)將通過使用'figsize =(width,height)'參數來增加圖形相對於寬度的高度來解決。 – Brian