damyarou

python, GMT などのプログラム

matplotlib グラフ軸設定

記事の最後に行く

ポイント

この事例では、plt.gca().set_aspect('equal',adjustable='box') により縦軸と横軸のスケールをあわせています。

下記サンプル画像を参照して、

  • subplot(131):軸設定はデフォルト。目盛数値表示箇所にグリッドが入っています。
  • subplot(132):グリッドを細かく入れた場合のサンプル。
  • subplot(133):下と左の軸のみを描画したもの。FEMのメッシュ図や説明図作成時などに使います。

全ての軸を描画しないならば以下でOK。

plt.axis('off')

グラフ軸設定サンプル画像

f:id:damyarou:20190501110017j:plain

プログラム

# Sample of axes setting
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as tick


def main():
    fsz=10
    xmin=0 ; xmax=15; dx=5
    ymin=60; ymax=85; dy=5
    plt.figure(figsize=(10,5),facecolor='w')
    plt.rcParams['font.size']=fsz
    plt.rcParams['font.family']='sans-serif'

    tstr='subplot(131)'
    plt.subplot(131)
    plt.xlim([xmin,xmax])
    plt.ylim([ymin,ymax])
    plt.xlabel('x_axis')
    plt.ylabel('y_axis')
    plt.xticks(np.arange(xmin,xmax+dx,dx))
    plt.yticks(np.arange(ymin,ymax+dy,dy))
    plt.grid(color='#999999',linestyle='solid')
    plt.gca().set_aspect('equal',adjustable='box')
    plt.title(tstr,loc='left',fontsize=fsz)

    tstr='subplot(132)'
    plt.subplot(132)
    plt.xlim([xmin,xmax])
    plt.ylim([ymin,ymax])
    plt.xlabel('x_axis')
    plt.ylabel('y_axis')
    plt.xticks(np.arange(xmin,xmax+dx,dx))
    plt.yticks(np.arange(ymin,ymax+dy,dy))
    plt.gca().xaxis.set_minor_locator(tick.MultipleLocator(1.0))
    plt.gca().yaxis.set_minor_locator(tick.MultipleLocator(1.0))
    plt.grid(which='both',color='#999999',linestyle='solid')
    plt.gca().set_aspect('equal',adjustable='box')
    plt.title(tstr,loc='left',fontsize=fsz)

    tstr='subplot(133)'
    plt.subplot(133)
    plt.xlim([xmin,xmax])
    plt.ylim([ymin,ymax])
    plt.xlabel('x_axis')
    plt.ylabel('y_axis')
    plt.xticks(np.arange(xmin,xmax+dx,dx))
    plt.yticks(np.arange(ymin,ymax+dy,dy))
    plt.gca().spines['right'].set_visible(False)
    plt.gca().spines['top'].set_visible(False)
    plt.gca().yaxis.set_ticks_position('left')
    plt.gca().xaxis.set_ticks_position('bottom')
    plt.gca().set_aspect('equal',adjustable='box')
    plt.title(tstr,loc='center',fontsize=fsz)

    plt.tight_layout()
    fnameF='fig_axis.jpg'
    plt.savefig(fnameF, dpi=100, bbox_inches="tight", pad_inches=0.1)
    plt.show()


#---------------
# Execute
#---------------
if __name__ == '__main__': main()

Thank you.

記事の先頭に行く