以前は別々だった 2 つの図を結合しようとしています。1 つは 3 パネルの図 (ax1、ax2、ax3) (すべて で生成imshow
) で、側面に 1 つのカラーマップを使用していました。imread
ここで、とget_sample_data
(から)を使用して、png ファイルから読み込む別の図 (ax0) を追加したいと思いますmatplotlib.cbook
。
問題は、この新しい図が 3 つのパネルからのものと同じカラーマップを使用するため、新しく追加されたパネルで 1 つの単純な均一な色が生成されることです。他の 3 つのパネルはまだ適切な色です。
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
import numpy as np
g1 = gridspec.GridSpec(4, 1, height_ratios=[4,1,1,1])
g1.update(wspace=0.05, hspace=0.2) # set the spacing between axes.
f, ((ax0), (ax1), (ax2), (ax3)) = plt.subplots(4, 1, sharex='col', sharey='row')
ax0 = subplot(g1[0])
ax1 = subplot(g1[1])
ax2 = subplot(g1[2])
ax3 = subplot(g1[3])
from matplotlib.cbook import get_sample_data
im2 = plt.imread(get_sample_data('PathToFig/Figure.png'))
ax0.imshow(im2, vmax=1)
ziAA = np.random.rand(4, 4, 4)
ziAB = np.random.rand(4, 4, 4)
ziBA = np.random.rand(4, 4, 4)
ax1.imshow(ziAA,origin="lower",vmin=0,vmax=0.03,aspect="auto",extent=[-0.15,0.15,0,4])
ax2.imshow(ziAB,origin="lower",vmin=0,vmax=0.03,aspect="auto",extent=[-0.15,0.15,0,4])
im = ax3.imshow(ziBA,origin="lower",vmin=0,vmax=0.03,aspect="auto",extent=[-0.15,0.15,0,4])
from matplotlib import ticker
tick_locator = ticker.MaxNLocator(nbins=5)
f.subplots_adjust(right=0.85)
cbar_ax = f.add_axes([1.0, 0.15, 0.01, 0.7])
cbar = f.colorbar(im, cax=cbar_ax)
cbar.locator = tick_locator
cbar.update_ticks()
cbar.solids.set_rasterized(True)
cbar.solids.set_edgecolor("face")
ziAB
、ziBA
および以前の補間呼び出しziAA
で生成されました。griddata
imshow
各呼び出し内で 2 つの異なるカラーマップを指定してみました。 の値を変更してみましたvmax
。しかし、無駄に...
-のax0
後に置くと、適切な色を取得するのは ax0 であり、-ではありません。ax1
3
ax1
3
マスクされた配列または独自のカラーマップの作成について話している他の同様の質問 (同じ imshow matplotlib 内の 2 つの異なるカラー カラーマップpng
) を見てきましたが、ax0 のファイルの起源のために、どのように進めるべきかがよくわかりません。 .
編集 :
おもちゃデータ:
ziAA = np.random.rand(4, 4, 4)
ziAB = np.random.rand(4, 4, 4)
ziBA = np.random.rand(4, 4, 4)
おもちゃの png フィギュア:
この図では、均一な色は白になります。私の実際の姿は均一な赤を与えます。これは、vmin、vmax、およびおそらく他の制御パラメーターを適切に調整することにより、png の図が適切に表示されるようになる可能性があることを示唆しています。ただし、任意の png フィギュアで機能するものに興味があります...