##やろうとしていること
オリジナルの画像と、バイキュービック画像を並列に表示させています。
この2つの画像のカラーバーを
共通化
画像と同じサイズに合わせる
ことをしたいと考えています。
次のプログラムコードで同じ画像を2つ並べてカラーバーを画像サイズに配置するところまでできました。
右側の画像をバイキュービック画像にしたいのですが、方法が分かりません。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答3件
0
ベストアンサー
https://matplotlib.org/3.2.0/api/_as_gen/matplotlib.pyplot.pcolor.html
を見る限り、 pcolor()
は interpolation
パラメータを取れるように見えません。
カラーバーを画像に合わせるため、axes[1].pcolormeshを使っています。
の部分がよくわからないのですが、imshow()
を使って、pcolor()
と同じようなの形式で出力することはできますので、そちらで対応 するのは駄目なのでしょうか。
Python
1sensordata = np.array(linedata) 2fig, ax = plt.subplots(figsize=(8,4),ncols=2) 3mappable0 = ax[0].imshow(sensordata, cmap="plasma", 4 extent=[0,sensordata.shape[0],0,sensordata.shape[1]], 5 aspect='auto', 6 origin='lower') 7mappable1 = ax[1].imshow(sensordata, cmap="plasma", 8 extent=[0,sensordata.shape[0],0,sensordata.shape[1]], 9 interpolation="bicubic", 10 aspect='auto', 11 origin='lower') 12fig.colorbar(mappable0, ax=ax[0]) 13fig.colorbar(mappable1, ax=ax[1]) 14fig.tight_layout()
投稿2020/03/09 04:45
総合スコア15898
0
interpolation を使いたいのであれば、imshow() を使えばよいのではないでしょうか。
両方とも imshow() を使えば図の大きさも揃います。
python
1import matplotlib.pyplot as plt 2import numpy as np 3from mpl_toolkits.axes_grid1 import make_axes_locatable 4 5data = np.random.randint(0, 256, (20, 20)) 6 7fig, [ax1, ax2] = plt.subplots(figsize=(8, 4), ncols=2, sharey=True) 8im1 = ax1.imshow(data, cmap="plasma", aspect="auto") 9im2 = ax2.imshow(data, cmap="plasma", interpolation="bicubic", aspect="auto") 10ax1.set_xlabel("X") 11ax2.set_xlabel("X") 12ax1.set_ylabel("Y") 13fig.subplots_adjust(wspace=0.07) 14 15divider = make_axes_locatable(ax2) 16cax = divider.append_axes("right", size="5%", pad=0.05) 17fig.colorbar(im2, cax=cax) 18 19plt.show()
追記
python
1import matplotlib.pyplot as plt 2import numpy as np 3from mpl_toolkits.axes_grid1 import ImageGrid 4 5data = np.random.randint(0, 256, (20, 20)) 6 7fig = plt.figure(figsize=(10, 5)) 8 9grid = ImageGrid( 10 fig, 11 111, 12 nrows_ncols=(1, 2), 13 axes_pad=0.2, 14 share_all=True, 15 cbar_location="right", 16 cbar_mode="single", 17) 18 19im1 = grid[0].imshow( 20 data, cmap="plasma", extent=[0, data.shape[0], 0, data.shape[1]], origin="lower", 21) 22im2 = grid[1].imshow( 23 data, 24 cmap="plasma", 25 interpolation="bicubic", 26 extent=[0, data.shape[0], 0, data.shape[1]], 27 origin="lower", 28) 29grid[0].set_xlabel("X") 30grid[1].set_xlabel("X") 31grid[0].set_ylabel("Y") 32 33for ax in grid: 34 # 目盛りはここで設定 35 ax.set_xticks(np.arange(0, 21, 2)) 36 ax.set_yticks(np.arange(0, 21, 2)) 37 38grid.cbar_axes[0].colorbar(im2) 39 40plt.show()
投稿2020/03/09 04:30
編集2020/03/09 07:07総合スコア21960
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。