Tex, python, illusrator, VPSの学生ノート

latotex-blog

Python

contourfで作った図のカラーバーの端が三角形にならないときの対処法

投稿日:






図のカラーバーの調整は、fig.colorbarやその引数のcaxで調節すると思いますが、

カラーバーの端の調整はcontourfでの変更も必要です。

その対処法を書き留めておきます。

スポンサーリンク

fig.colorbarにextend='both'をいれるだけ!

解決策はタイトルの名の通り、fig.colorbarにextend='both'をいれるだけです。

fig.colorbarやその引数のcaxにboundやextend='both',extendfrac='auto'

をいれるだけでは、意味がありません。以下にサンプルコードを置きますので、試してみてください。

#!/usr/bin/env python3

#必要なものを宣言
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.axes_grid1.inset_locator import inset_axes

#colorbarの方向
cb_axis = 'vertical'

#解像度の指定
set_dpi = 100

#X、Yのグリット指定とZの定義
X, Y = np.mgrid[-10:11, -10:11]
Z = X** 2 + Y

#ここから作図
fig, ax = plt.subplots(figsize=(8, 6))

#colorbarの色の種類を決める
cmap = plt.get_cmap("jet")

#等高線を描く
cs = ax.contourf(X, Y, Z, extend='both', cmap=cmap) #extend='both'がポイント

#図の外にcolorbarをつけるときinset_axesをつかう
#bbox_to_anchorだけでの位置の指定が一般的だが、widthやheightがあった方が
#()個人的には)位置を調節しやすい
axins1 = inset_axes(ax,
                        width="2%",  # width = 50% が bbox_to_anchorの値と一致する
                        height="50%",
                        bbox_to_anchor=(0.55, -0.01, 1, 2),
                        bbox_transform=ax.transAxes,
                        loc='lower center')

#colorbarをつける
fig.colorbar(cs,
                orientation=cb_axis,cax=axins1,
                shrink=0.8,
                extend='both',extendfrac='auto')

#pngで保存
plt.savefig('test.png', format='png', dpi=set_dpi)
#plt.show()


    

-Python

Copyright© latotex-blog , 2020 All Rights Reserved Powered by STINGER.