#質問
次の図に示すように3Dグラフがはみ出しているのを修正したいです。
#コード
Python
1import numpy as np 2import scipy.io 3import matplotlib.pyplot as plt 4import makegraph as mg 5import analysisfunction as af 6from scipy import signal 7from scipy import fftpack 8from mpl_toolkits.mplot3d import Axes3D 9from matplotlib import mathtext 10 11def FFTparameter(Fs,N): 12 fmax=int(Fs/2.56)#最大周波数 13 Line=int(N/2.56)#ライン数 14 dt=1/Fs#サンプリング間隔 15 df=fmax/Line 16 t=np.arange(0,N*dt,dt)#時間軸 17 freq=np.arange(0,Line*df,df)#周波数軸 18 return fmax,Line,dt,df,t,freq 19 20def wave1_FFT(data,samplerate,df,Fs,overlap,window): 21 22 Ts = len(data) / samplerate 23 Fc = Fs / samplerate 24 x_ol = Fs * (1 - (overlap/100)) 25 N_ave = int((Ts - (Fc * (overlap/100))) / (Fc * (1-(overlap/100)))) 26 xdata=np.linspace(0,samplerate,N)#周波数データ 27 ydata=np.linspace(0,len(data)/Fs,N_ave)#時間データ 28 zdata=[]#振幅データ 29 for j in range(N_ave): 30 array = [] 31 ps = int(x_ol * j) 32 array.append(data[ps:ps+N:1]) 33 array_window=array*window 34 F = fftpack.fft(array_window) 35 Famp=np.abs(F) 36 F_total=np.sum(Famp,axis=0) 37 F_average=F_total / Fs*2 38 acf=1/(sum(window)/Fs) 39 F_average=acf*F_average 40 zdata.append(F_average) 41 return xdata,ydata,zdata 42 43Fs=8192 44N=8192 45overlap=50 46 47#flattop_window = signal.flattop(N) # フラットトップ窓 48hanning_window = np.hanning(N) # ハン窓 49#rec_window=signal.boxcar(N)#レクタンギュラ窓 50 51matdata = scipy.io.loadmat('SweepSignalFs8192.mat') 52wavedata=np.array(matdata['Data']).squeeze() 53 54fmax,Line,dt,df,t,freq=FFTparameter(Fs,N) 55#F_ave,N_ave=wave_FFT(wavedata,Fs,N,dt,overlap,hanning_window) 56#print(len(wavedata)*dt) 57 58 59x1,y1,z1=wave1_FFT(wavedata,N,df,Fs,overlap,hanning_window) 60X,Y=np.meshgrid(x1,y1) 61Z=np.array(z1) 62 63 64fig, ax = plt.subplots(figsize=(10, 10), subplot_kw={'projection' : '3d'}) 65ax.set_xlim(0.0,200) 66ax.set_xticks(np.linspace(0.0, 200, 11)) 67ax.set_ylim(0.0,80.0) 68ax.set_yticks(np.linspace(0.0, 80.0, 9)) 69ax.set_zticks(np.linspace(0.0,0.1,3)) 70ax.set_xlabel("Frequency [Hz]",fontsize=20) 71ax.set_ylabel("Time [s]",fontsize=20) 72ax.set_zlabel("Mag [m/s^2,0-p]",fontsize=20) 73ax.plot_wireframe(X,Y,Z) 74 75ax.view_init(elev=70, azim=270) 76plt.savefig('Waterfall_example.png')
#考えたこと
ax.plot.wireframe(X[0:200],Y,Z)と制限をかけてみたものの、出力結果変わらず
X>200の領域において線の色を透明にして見えなくすることを試みるも出力結果は変わらず
パラメータをいじることなくグラフの一部を非表示にするコマンドというのは何かあるのでしょうか?
回答1件
あなたの回答
tips
プレビュー