matplotlibを使用して私のプロット用のカラーバーをPythonで作成する際に問題があります。カラーマップを使用していますが、プロットするすべてのデータを色付けするのではなく、プロットしない値に基づいてプロットの色を抽出します。これはうまくいくと思っています。 私はforループで、あるパラメータに基づいて色で毎回プロットを作成します。このように(データはMWEを作成するための一例であり、私のデータはより複雑である):今すぐmatplotlibプロットの横にカラーマップを作成して、データをプロットすることなくカラーマップを作成する
import matplotlib as mpl
from matplotlib import pyplot as plt
import numpy as np
xdata = np.array(range(10))
parameter = [0.5, 0.3, 0.78, 0.21, 0.45] #random parameter example
cmap = mpl.cm.get_cmap('jet')
for i in range(len(parameter)):
clr = cmap(parameter(i))
plt.plot(xdata,xdata**i,c=clr)
plt.show()
、私が望むことは側のカラーバーがある(または実際には二つの、それは私が考える別の問題です)には、ジェットカラーマップとその値が表示されます。値は新しい最小値と最大値にスケーリングする必要があります。
は、これまでのところ、私は次のことを見つけたが、私は私自身の問題に適用するのに十分なことを理解していない:
Getting individual colors from a color map in matplotlib どの色を抽出するために私に言ったし、正規化を作成する方法を示していますカラーマップ
Colorbar only プロットされたデータを使わずにカラーバーを追加する方法を教えてください。しかし、十分理解できません。私の問題は、軸の作成です。私は私のプロットの隣にカラーバーを置いておきたいなら、この部分を理解していません。この例では、ハンドルはfig
のFigureを作成しますが、私の場合はplt.imshow(image)
を作成するとFigureが作成されます。なぜなら、これが最初から始まっていて、次に画像の上にプロットしているからです。ここではfig.add_axes
を使用できません。
ここで私を助けてくれることを願っています。 「反転した」カラーバーを作成することができれば嬉しいです。したがって、色が逆方向にあるか、バーの横にある値になります。
スクリプトの任意の時点で、 'fig = plt.gcf()'と 'ax = plt.gca()'を介して軸を取得できます。だから、軸の追加は 'plt.gcf()。add_axes(...)'で行うことができます。何かをプロットする前に 'fig = plt.figure()'を置くことには何も問題ありません。すべての標準カラーマップは逆のバージョンを持ち、名前の末尾に '_r'を付けます。 'viridis'の代わりに' viridis_r'を使うことができます。 – ImportanceOfBeingErnest
ありがとう、これは私が必要とするように聞こえる!残念ながら、明日まで試してみることはできません、それがうまくいけばお知らせします。私はMATLABと何度も協力してきたので、gcfとgcaを考えていたはずです... -.- –
これはちょうど私が必要としていたことでした。私は知っていたはずだったはずだと思いますが、私はもうこれをすべて一緒にまとめることができなかったので、本当にここで私を助けました。あなたが答えとして投稿すれば、私はそれを投票します;-) –