1つのパラメータが異なり、1つの図にプロットしたい複数の曲線があります。それらを区別するために、matplotlibのカラーバーの1つを使用したいと思います。そうするために、私は上記のパラメータに応じて色のリストを作成します。また、使用する色を説明するためにカラーバーを追加したいと思います。私はそのすべてを簡単に行うことができます。問題は今や、利用可能なカラーマップの一部だけを使用したいと思っています。それは明るすぎるため、ある閾値を超えてはほとんど見えません。しかし、今ではサブレンジでのみ色を選択すると、表示されるカラーバーの範囲を調整する方法が見つかりませんでした。結果は見matplotlibのカラーバーの一部だけを使用してプロットする方法は?
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
gs = gridspec.GridSpec(2, 1,
height_ratios=[1, 4]
)
ax = [plt.subplot(g) for g in gs]
parameterToColorBy = np.linspace(5, 10, 6, dtype=float)
maxColor = 0.85
colors = [plt.get_cmap("inferno")(i)
for i in np.linspace(0, maxColor, parameterToColorBy.shape[0])]
norm = mpl.colors.Normalize(parameterToColorBy[0],
parameterToColorBy[0]+
(parameterToColorBy[-1]-parameterToColorBy[0])/
maxColor)
cb = mpl.colorbar.ColorbarBase(ax[0],
cmap="inferno",
norm=norm,
ticks=parameterToColorBy,
orientation='horizontal')
ax[0].xaxis.set_ticks_position('top')
for p, c in zip(parameterToColorBy, colors):
ax[1].plot(np.arange(2)/p, c=c)
plt.show()
次のとおりです:ここで
は私が達成したいものの(ほぼ)最小限の例です。私は今、カラーバーが10で停止したい
しかし、ax[0].set_xlim(0, maxColor)
という行を追加してサブプロットのxlim
を調整するだけでは、色付きの部分は正しく調整されますが、周囲のボックスは台無しです。
また、カラーバーの機能を見つけましたset_clim
。しかし、これは正規化を変更するだけで、私が望むようには動作しないようです。変更された色が、そのまま軸にcb.set_clim(parameterToColorBy[0], parameterToColorBy[-1])
結果を追加:
表示カラーバーの制限を調整するための適切な方法、またはサブセットとして独自のカラーバーを作成する方法のいずれかであります使用可能なカラーバーを表示します。これらのことを達成する方法はありますか?
はあなただけ(例えば、0.0から0.9)の代わりにもう一方の端にlinspaceを制限し、このhttp://stackoverflow.com/a/26105100/189050を使用してもらえますか? – Deditos
@Deditos提案していただきありがとうございます。私はおそらく、多くの点を使ってこれらの線に沿って何かを行い、大まかに連続したカラーマップを得ることができます。しかし、私は彼の答えでtomによって提案された解決策を好むと思う。 – jotasi