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

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

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

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

Q&A

1回答

740閲覧

1つのグラフに複数プロットしたい

keisokukunn

総合スコア9

Python

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

0グッド

1クリップ

投稿2021/04/18 11:08

編集2022/01/12 10:55

前提・実現したいこと

現在、FFTプログラムを作成しています。
n個(n=1,2,3,.....)のデータを一つのグラフに重ねてプロットしたいと思い、for文を用いて試みているのですが、うまく実行することが出来ません。
現在のソースコードは該当ソースコードのようになっています。
ご教授して頂けると幸いです。

発生している問題・エラーメッセージ

TypeError Traceback (most recent call last) <ipython-input-106-3b91932838c2> in <module> 61 62 plt.figure(figsize=(6,4)) ---> 63 plt.plot(fq[:int(N/2)+1],Data[:int(N/2)+1],color=colorlist(range(1,j+1))) 64 plt.title(str(n)+"回目") 65 plt.xlabel("frequency[Hz]",fontsize=14) TypeError: 'int' object is not callable

該当のソースコード

Python

1import numpy as np 2import pandas as pd 3import os 4import matplotlib.pyplot as plt 5 6file_name = input("Please input filename:") 7Sampling_frequency = int(input("Please input Sampling_frequency: ")) 8Number_of_iterations = int(input("Please input Number_of_iterations:")) 9 10#読み込んだデータの次元確認 11print("配列の次元:\n"+str(data.ndim)) 12print("配列次元変更後:\n"+str(data2.ndim)) 13 14#データ数 15N=len(data) 16print("サンプル数:\n"+str(N)) 17 18#サンプリング周波数 19fs=Sampling_frequency 20print("サンプリング周波数:\n"+str(fs)) 21 22#窓関数 23window=np.hamming(N) 24 25#窓関数の補正値 26acf=(1/(sum(window)/N)) 27print("窓関数適用後のスペクトル補正値:\n"+str(acf)) 28 29#時間軸のデータ作成 30t=np.arange(0,N*(1/fs),1/fs) 31 32#周波数軸のデータ作成 33fq=np.linspace(0,fs,N) #周波数軸 linspace(開始,終了,分割数) 34 35#線色のリスト 36color_list=["black","gray","lightcoral","brown","darkred","red","tomato","sienna","sandybrown","darkorange","tan","gold","darkkhaki" 37 ,"yellowgreen","olivedrab","darkturquoise","lightblue" 38 ,"steelblue","cornflowerblue","navy","blue","indigo","darkviolet","purple","magenta","crimson","lightpink"] 39 40colorlist=len(color_list) 41 42for n in range(1,Number_of_iterations+1): 43 for j in range(0,colorlist): 44 #データの読み込み 45 data=pd.read_csv(os.path.join(r"Z:/private/結果/",file_name),header=None,usecols=list(range(1,n+1)),names=[f"{n}回目" for n in range(1,n+1)]) 46 47 #2次元配列から1次元配列に変更 48 data2=data[str(n)+"回目"].values 49 50 #窓関数後の信号 51 data_w=window*data2 52 53 #読み込んだデータをフーリエ変換 54 data_w_FFT=np.fft.fft(data_w) 55 56 #FFTの複素数結果を絶対値に変換 57 data_w_FFT_abs=abs(data_w_FFT) 58 59 #窓補正 60 Data=(data_w_FFT_abs)*acf 61 print(Data) 62 63 plt.figure(figsize=(6,4)) 64 plt.plot(fq[:int(N/2)+1],Data[:int(N/2)+1],color=colorlist(range(1,j+1))) 65 plt.title(str(n)+"回目") 66 plt.xlabel("frequency[Hz]",fontsize=14) 67 plt.ylabel("signal intensity",fontsize=14) 68 plt.xlim(0,2000) 69 plt.show() 70

試したこと

補足情報(FW/ツールのバージョンなど)

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2021/04/18 11:16

> for文を用いて試みているのですが、うまく実行することが出来ません。 どうなっているのでしょうか?
keisokukunn

2021/04/18 12:09

エラーメッセージを載せることを忘れていました。申し訳ございません。 修正したので見て頂けると幸いです。
guest

回答1

0

エラー発生原因は下記でしょう。

Python

1color_list=["black","gray","lightcoral","brown","darkred","red","tomato","sienna","sandybrown","darkorange","tan","gold","darkkhaki","yellowgreen","olivedrab","darkturquoise","lightblue","steelblue","cornflowerblue","navy","blue","indigo","darkviolet","purple","magenta","crimson","lightpink"] 2colorlist=len(color_list) 3j = 0 4color=colorlist(range(1,j+1)) 5# TypeError: 'int' object is not callable

colorlist(range(1,j+1))ですが、まずcolorlistではなくcolor_listが適切でしょう。
color=colorlist(range(1,j+1))で実現したかったことが何かは分かりませんが、単純にcolor=color_list[j]で良いのではないでしょうか?

投稿2021/04/18 14:03

meg_

総合スコア10577

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問