Python グラフのy範囲を最小値0、最大値は自動設定にする方法「matplotlib」

 デフォルト設定でグラフを作成すると、軸の最小、最大の範囲は自動で設定されます。例えば、下図のように縦軸yの最小値が0にならない場合が普通です。これは、散布図や棒グラフ等で何かしら比較したい場合に、一見大きな差があるかのようなグラフの仕上がりになってしまいます。(株価のような場合はそれでも良いかもしれませんが)

f:id:HK29:20200531234822p:plain

 そこで、下図のように縦yレンジを0スタートに変更します。
その他にも、グラフ作成テクニックとして、x軸の表示間隔を変更したり、表記を45度回転する等の方法も本コードに記載しました。

f:id:HK29:20200531235520p:plain

■本プログラム

#!/usr/bin/env python3
# coding: utf-8
import numpy as np 
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import japanize_matplotlib

def main():
    # 散布図1
    x = np.linspace(0, np.pi * 3, 100)
    y = np.sin(x) + 100
    plt.scatter(x, y, facecolor='None', edgecolor='r')
    plt.xlabel('x ラベル')
    plt.ylabel('y label')
    plt.legend(loc='upper right', fontsize=16, title='LEGEND')
    plt.title('タイトル', loc='left', fontsize=16)
    plt.tight_layout()
    plt.savefig('y_default.png')

    # 散布図2
    ax = plt.gca() # get current axes 現在の軸設定データを取得する
    # X軸目盛表記を調整する
    x_ticklabels = ax.get_xticklabels() # デフォルトの目盛り表記をゲットする
    plt.setp(x_ticklabels, rotation=45) # 目盛り表記を45度回転。#フォントサイズの指定する場合 ,fontsize=16)
    tick_spacing = 3 # 目盛り表示する間隔
    ax.xaxis.set_major_locator(ticker.MultipleLocator(tick_spacing)) # X軸目盛の表示間隔を間引く
    y_min, y_max = ax.get_ylim()
    ax.set_ylim(0, y_max)

    plt.grid(False)
    plt.savefig('y_0_start.png')

if __name__ == '__main__':
    # デフォルト設定をオーバーライト
    plt.rcParams['figure.figsize'] = (8, 6)
    plt.rcParams.update({'font.size': 14})
    plt.rcParams['axes.grid'] = True

    main()

●グラフを日本語表記する手順は、下記を参考下さい

hk29.hatenablog.jp

以上

<広告>