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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

解決済

pythonでのグラフ複数表示

kamikura
kamikura

総合スコア0

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

1回答

0評価

0クリップ

5118閲覧

投稿2019/01/04 05:00

pythonを用いて、グラフの複数表示をしようとしているのですがうまくいきません。
現状問題としては、表示したいグラフは表示されるが、Figure1に全てのデータが入っているようです。
文字列で表すと以下の様になります。

表示の理想
Figure1 Figure2
1a 3a 1b 3b
2a 4a 2b 4b

のような形で複数のFigureの中にそれぞれ複数のグラフを内包するような形での表示をしたいです。
今の状態だと、最初にFigure1が表示され、そのウィンドウを消すと新たにFigure1が生成されます。
ここ最初に生成されたFigure1のほうには、1a~4aのグラフが内包されていて、
後から生成されたFigure1のほうには、1b~4bのグラフが内包されています。

今後のデータ処理の関係上、Figure1からFigure4を生成出来る様になれば良いのですが…。

以下に表示部分に関するソースを提示します。
分かりにくいかと思いますが宜しくお願いします。

python

#ウェーブレット解析結果の可視化 plt.close("all") plt.ioff() figprops = dict(figsize=(11, 8), dpi=72) fig = plt.figure(**figprops) ax1 = plt.axes([0.1, 0.75, 0.65, 0.2]) ax1.plot(t1, iwave, "-", linewidth=1, color=[0.5, 0.5, 0.5]) ax1.plot(t1, dat1, "k", linewidth=1.5) ax1.set_title("a) {}".format(title)) ax1.set_ylabel(r"{}".format(label)) bx1 = plt.axes([0.1, 0.37, 0.65, 0.28], sharex=ax1) levels = [0.03125, 0.0625, 0.125, 0.25, 0.5, 1, 2, 4, 8, 16, 32] bx1.contourf(t1, np.log2(period), np.log2(power), np.log2(levels), extend="both", cmap=plt.cm.viridis) extent = [t1.min(), t1.max(), 0, max(period)] bx1.contour(t1, np.log2(period), sig95, [-99, 1], colors="k", linewidths=2, extent=extent) bx1.fill(np.concatenate([t1, t1[-1:] + dt, t1[-1:] + dt, t1[:1] - dt, t1[:1] - dt]), np.concatenate([np.log2(coi), [1e-9], np.log2(period[-1:]), np.log2(period[-1:]), [1e-9]]), "k", alpha=0.3, hatch="x") bx1.set_title("b){} Wavelet Power Spectrum ({})".format(label, mother.name)) bx1.set_ylabel("Period") Yticks = 2 ** np.arange(np.ceil(np.log2(period.min())), np.ceil(period.max())) bx1.set_yticks(np.log2(Yticks)) bx1.set_yticklabels(Yticks) cx1 = plt.axes([0.77, 0.37, 0.2, 0.28], sharey=bx1) cx1.plot(glbl_signif, np.log2(period), "k--") cx1.plot(var * fft_theor, np.log2(period), "--", color="#cccccc") cx1.plot(var * fft_power, np.log2(1./fftfreqs), "-", color="#cccccc", linewidth=1.) cx1.plot(var * glbl_power, np.log2(period), "k-", linewidth=1.5) cx1.set_title("c) Global Wavelet Spectrum") cx1.set_xlabel(r"Power {}^2".format(units)) cx1.set_xlim([0, glbl_power.max() + var]) cx1.set_ylim(np.log2([period.min(), period.max()])) cx1.set_yticks(np.log2(Yticks)) cx1.set_yticklabels(Yticks) plt.setp(cx1.get_yticklabels(), visible=False) #---------------------------------------------------------------------- dx1 = plt.axes([0.1, 0.07, 0.65, 0.2], sharex=ax1)#グラフの配置指定、 dx1.axhline(scale_avg_signif, color="k", linestyle="--", linewidth=1.)#xに対する平行な線、出力内容は不明… dx1.plot(t1, scale_avg, "k-", linewidth=1.5)#ここのプロット結果を行列?か何かで出力したい #---------------------------------------------------------------------- dx1.set_title("d) {}--{} EMG[V] power spectrum".format(t0, max(t1))) dx1.set_xlabel("Time [{}]".format(timetable)) dx1.set_ylabel(r"Scale Avg") ax1.set_xlim([t1.min(), t1.max()]) plt.show() #ウェーブレット解析結果の可視化2 plt.close("all") plt.ioff() figprops = dict(figsize=(11, 8), dpi=72) fig = plt.figure(**figprops) ax2 = plt.axes([0.1, 0.75, 0.65, 0.2]) ax2.plot(t2, iwave, "-", linewidth=1, color=[0.5, 0.5, 0.5]) ax2.plot(t2, dat2, "k", linewidth=1.5) ax2.set_title("a) {}".format(title)) ax2.set_ylabel(r"{}".format(label)) bx2 = plt.axes([0.1, 0.37, 0.65, 0.28], sharex=ax2) levels = [0.03125, 0.0625, 0.125, 0.25, 0.5, 1, 2, 4, 8, 16, 32] bx2.contourf(t2, np.log2(period2), np.log2(power2), np.log2(levels), extend="both", cmap=plt.cm.viridis) extent = [t2.min(), t2.max(), 0, max(period2)] bx2.contour(t2, np.log2(period2), sig95_2, [-99, 1], colors="k", linewidths=2, extent=extent) bx2.fill(np.concatenate([t2, t2[-1:] + dt, t2[-1:] + dt, t2[:1] - dt, t2[:1] - dt]), np.concatenate([np.log2(coi), [1e-9], np.log2(period2[-1:]), np.log2(period2[-1:]), [1e-9]]), "k", alpha=0.3, hatch="x") bx2.set_title("b){} Wavelet Power Spectrum ({})".format(label, mother.name)) bx2.set_ylabel("Period") Yticks = 2 ** np.arange(np.ceil(np.log2(period2.min())), np.ceil(period2.max())) bx2.set_yticks(np.log2(Yticks)) bx2.set_yticklabels(Yticks) cx2 = plt.axes([0.77, 0.37, 0.2, 0.28], sharey=bx2) cx2.plot(glbl_signif2, np.log2(period2), "k--") cx2.plot(var2 * fft_theor, np.log2(period2), "--", color="#cccccc") cx2.plot(var2 * fft_power2, np.log2(1./fftfreqs), "-", color="#cccccc", linewidth=1.) cx2.plot(var2 * glbl_power2, np.log2(period2), "k-", linewidth=1.5) cx2.set_title("c) Global Wavelet Spectrum") cx2.set_xlabel(r"Power {}^2".format(units)) cx2.set_xlim([0, glbl_power2.max() + var2]) cx2.set_ylim(np.log2([period2.min(), period2.max()])) cx2.set_yticks(np.log2(Yticks)) cx2.set_yticklabels(Yticks) plt.setp(cx2.get_yticklabels(), visible=False) #---------------------------------------------------------------------- dx2 = plt.axes([0.1, 0.07, 0.65, 0.2], sharex=ax2) dx2.axhline(scale_avg_signif2, color="k", linestyle="--", linewidth=1.) dx2.plot(t2, scale_avg2, "k-", linewidth=1.5) #---------------------------------------------------------------------- dx2.set_title("d) {}--{} EMG[V] power spectrum".format(t0, max(t2))) dx2.set_xlabel("Time [{}]".format(timetable)) dx2.set_ylabel(r"Scale Avg") ax2.set_xlim([t2.min(), t2.max()]) plt.show()

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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