3

2つの異なるy軸とカラーバーを持つ散布図を作成しようとしています。

使用される擬似コードは次のとおりです。

#!/usr/bin/python

import matplotlib.pyplot as plt
from matplotlib import cm

fig = plt.figure()
ax1 = fig.add_subplot(111)
plt.scatter(xgrid,
        ygrid,
        c=be,                   # set colorbar to blaze efficiency
        cmap=cm.hot,
        vmin=0.0,
        vmax=1.0)

cbar = plt.colorbar()
cbar.set_label('Blaze Efficiency')

ax2 = ax1.twinx()
ax2.set_ylabel('Wavelength')

plt.show()

そして、それはこのプロットを生成します: プロット

私の質問は、「波長」軸に異なるスケールをどのように使用するか、また、波長の邪魔にならないようにカラーバーをより右に移動する方法です。

4

2 に答える 2

5

@OZ123返信に時間がかかってすみません。Matplotlibには拡張可能なカスタマイズ性があり、実際に行っていることに混乱することがあります。個別の軸の作成にご協力いただきありがとうございます。

ただし、それほど多くの制御が必要だとは思わなかったため、PADキーワード引数を使用することになりました。

fig.colorbar()

そしてこれは私が必要なものを提供しました。

擬似コードは次のようになります。

#!/usr/bin/python

import matplotlib.pyplot as plt
from matplotlib import cm

fig = plt.figure()
ax1 = fig.add_subplot(111)
mappable = ax1.scatter(xgrid,
                       ygrid,
                       c=be,                   # set colorbar to blaze efficiency
                       cmap=cm.hot,
                       vmin=0.0,
                       vmax=1.0)

cbar = fig.colorbar(mappable, pad=0.15)
cbar.set_label('Blaze Efficiency')

ax2 = ax1.twinx()
ax2.set_ylabel('Wavelength')

plt.show()

これが今の様子を示すためですここに画像の説明を入力してください::

于 2012-06-25T15:09:34.667 に答える
2

これplt.colorbar()は非常に単純な場合のために作られています。たとえば、2つのy軸を持つプロットについてはあまり考えられていません。カラーバーの位置とプロパティをきめ細かく制御するには、ほとんどの場合、カラーバーをプロットする軸を指定するカラーバーを使用する必要があります。

# on the figure total in precent l    b      w , height 
cbaxes = fig.add_axes([0.1, 0.1, 0.8, 0.05]) # setup colorbar axes. 
# put the colorbar on new axes
cbar = fig.colorbar(mapable,cax=cbaxes,orientation='horizontal')

カラーバーは次のキーワードを使用することに注意してください。

キーワード引数:

cax なし| カラーバーが描画されるaxesオブジェクト ax なし| 新しいカラーバー軸のスペースが盗まれる親軸オブジェクト

また、別の軸の図のカラーバーに関する私のより拡張された答えをここで見ることができます。

于 2012-06-07T07:22:37.357 に答える