##やろうとしていること
Matplotlibで作成した画像を結合させたい。
2つのグラフを1つの図に作成するプログラムを作っています。
##困っていること
プログラムを実行すると、次のような表示になってしまいます。
右画像の周辺に枠(X, Yとも0~1の範囲)ができてしまいます。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
貼られているソースですと、
drawing1関数と二回呼んでいて、drawing2関数が呼ばれてないようですが、
その処理で大丈夫でしょうか。
2020/03/11 01:11
失礼しました。質問のコードを修正しました。
実際は、drawing2が呼ばれていますが、結合できない状況です。
回答1件
0
ベストアンサー
サブプロット間の間隔などをあとから細かく調整するくらいであれば、最初から全てのサブプロットを set_axes()
にて取得した方が良いのではないでしょうかね
Python
1# データ取得 2sensordata = np.array(linedata) 3 4# 描画エリアの設定 5fig = plt.figure(figsize=(10,4)) 6# (0.10, 0.10)-(0.40, 0.90) 7axes1 = fig.add_axes((0.10,0.1,0.30,0.8)) 8# (0.50, 0.10)-(0.80, 0.90) 9axes2 = fig.add_axes((0.50,0.1,0.30,0.8), projection="3d") 10# (0.43, 0.10)-(0.47, 0.90) 11cbar_ax1 = fig.add_axes((0.43,0.1,0.04,0.8)) 12# (0.83, 0.10)-(0.87, 0.90) 13cbar_ax2 = fig.add_axes((0.83,0.1,0.04,0.8)) 14 15 16im1 = axes1.imshow(sensordata, cmap="plasma", 17 extent=[0,sensordata.shape[0],0,sensordata.shape[1]], 18 interpolation="bicubic", 19 aspect='auto', 20 origin='lower') 21 22#軸ラベル設定 23axes1.set_xlabel("X") 24axes1.set_ylabel("Y") 25 26#軸目盛設定(設定方法を2つ記載) 27axes1.set_xticks(np.arange(0, 9, 1)) 28axes1.set_yticks(np.arange(0, 9, 1)) 29 30axpos = axes1.get_position() 31print(axpos) 32#Color Bar作成 33cbar = fig.colorbar(im1,cax=cbar_ax1) 34cbar.set_label("Temp") 35#Title表示 36axes1.set_title(title, fontsize=12) 37 38temp_min = sensordata.min() 39temp_max = sensordata.max() 40X, Y = np.indices(sensordata.shape) 41 42#散布図(dot)表示 43#s: Scale Default20 44im2 = axes2.scatter( 45 X.flat, 46 Y.flat, 47 sensordata.flat, 48 c=sensordata.flat, 49 cmap="jet", 50 edgecolor="gray", 51 s=160, 52) 53axes2.plot_surface(X, Y, sensordata, cmap="jet", alpha=0.4) 54# カラーバー追加 (xmin, ymin, w, h) でカラーバーを表示する位置を指定 55cbar = fig.colorbar(im2, cax=cbar_ax2) 56cbar.set_label("Temp") 57#軸ラベル設定 58axes2.set_xlabel("X") 59axes2.set_ylabel("Y") 60#軸目盛設定 61axes2.set_xticks(np.arange(0, 9, 1)) 62axes2.set_yticks(np.arange(0, 9, 1)) 63axes2.set_zticks(np.arange(temp_min, temp_max, 1)) 64#Title表示 65axes2.set_title(title, fontsize=12) 66# 視点 67axes2.view_init(30, -45)
投稿2020/03/11 04:40
総合スコア15898
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/11 04:51
ありがとうございます。
質問に掲示させていただいたのですが、3Dグラフの大きさを、右側のBicubic画像と同じくらいにすることはできますでしょうか。
axes2.scatterパラメータのsの値を変更しても、大きさが変わらないので、教えていただけると助かります。
2020/03/11 05:17
3dグラフが小さいということでしょうか?
現状で右と左の描画エリアのサイズは全く同じです。(共に width:0.3, height:0.8)
ただ、描画エリアのサイズは同じでも、片側はフルに2次元グラフを描画して、片側はその中に3Dグラフを書いているので、グラフ自体のサイズが違って見えるのはしょうがないのではないでしょうかね。
どうしても、それが許容できないのであれば、あとはサイズが同じに見えるように左側の描画サイズを大きくして調整するとよいかと思います。
2020/03/11 06:45
描画エリアのサイズを確認しました。失礼しました。
サイズが同じに見えるように調整させていただきます。
回答ありがとうございました。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。