質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

解決済

3Dグラフがはみ出る

tsuji__
tsuji__

総合スコア10

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1回答

0評価

0クリップ

1342閲覧

投稿2021/04/22 00:47

#質問 
次の図に示すように3Dグラフがはみ出しているのを修正したいです。

#現状の画像イメージ説明

#コード

Python

import numpy as np import scipy.io import matplotlib.pyplot as plt import makegraph as mg import analysisfunction as af from scipy import signal from scipy import fftpack from mpl_toolkits.mplot3d import Axes3D from matplotlib import mathtext def FFTparameter(Fs,N): fmax=int(Fs/2.56)#最大周波数 Line=int(N/2.56)#ライン数 dt=1/Fs#サンプリング間隔 df=fmax/Line t=np.arange(0,N*dt,dt)#時間軸 freq=np.arange(0,Line*df,df)#周波数軸 return fmax,Line,dt,df,t,freq def wave1_FFT(data,samplerate,df,Fs,overlap,window): Ts = len(data) / samplerate Fc = Fs / samplerate x_ol = Fs * (1 - (overlap/100)) N_ave = int((Ts - (Fc * (overlap/100))) / (Fc * (1-(overlap/100)))) xdata=np.linspace(0,samplerate,N)#周波数データ ydata=np.linspace(0,len(data)/Fs,N_ave)#時間データ zdata=[]#振幅データ for j in range(N_ave): array = [] ps = int(x_ol * j) array.append(data[ps:ps+N:1]) array_window=array*window F = fftpack.fft(array_window) Famp=np.abs(F) F_total=np.sum(Famp,axis=0) F_average=F_total / Fs*2 acf=1/(sum(window)/Fs) F_average=acf*F_average zdata.append(F_average) return xdata,ydata,zdata Fs=8192 N=8192 overlap=50 #flattop_window = signal.flattop(N) # フラットトップ窓 hanning_window = np.hanning(N) # ハン窓 #rec_window=signal.boxcar(N)#レクタンギュラ窓 matdata = scipy.io.loadmat('SweepSignalFs8192.mat') wavedata=np.array(matdata['Data']).squeeze() fmax,Line,dt,df,t,freq=FFTparameter(Fs,N) #F_ave,N_ave=wave_FFT(wavedata,Fs,N,dt,overlap,hanning_window) #print(len(wavedata)*dt) x1,y1,z1=wave1_FFT(wavedata,N,df,Fs,overlap,hanning_window) X,Y=np.meshgrid(x1,y1) Z=np.array(z1) fig, ax = plt.subplots(figsize=(10, 10), subplot_kw={'projection' : '3d'}) ax.set_xlim(0.0,200) ax.set_xticks(np.linspace(0.0, 200, 11)) ax.set_ylim(0.0,80.0) ax.set_yticks(np.linspace(0.0, 80.0, 9)) ax.set_zticks(np.linspace(0.0,0.1,3)) ax.set_xlabel("Frequency [Hz]",fontsize=20) ax.set_ylabel("Time [s]",fontsize=20) ax.set_zlabel("Mag [m/s^2,0-p]",fontsize=20) ax.plot_wireframe(X,Y,Z) ax.view_init(elev=70, azim=270) plt.savefig('Waterfall_example.png')

#考えたこと
ax.plot.wireframe(X[0:200],Y,Z)と制限をかけてみたものの、出力結果変わらず
X>200の領域において線の色を透明にして見えなくすることを試みるも出力結果は変わらず
パラメータをいじることなくグラフの一部を非表示にするコマンドというのは何かあるのでしょうか?

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

etherbeg

2021/04/23 01:50

X, Y, Zに想定されているような値が本当に格納されているか、一度出力して確認してみてはいかがでしょうか。 あと160Hz付近に縦に直線上の描画がありますがこれは正常ですか?
tsuji__

2021/04/23 03:03

定義域外のグラフのはみ出しは修正できましたが、160hzの直線描画についてはこちらの意図では無いので解決策を検討します。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。