はじめに
matplotlibを使った軸の一部が省略されたグラフの作成についての解説する。
コード
![](https://sabopy.com/wp/wp-content/uploads/2021/03/broken_axis_plot-1.png)
解説
モジュールのインポート
バージョン
データの生成
numpy.random.rand(30)
で0以上1未満の乱数を30個つくり、0.1をかけることで0〜0.1の数としている。
pts[13:16] *=200で13〜15番目の要素に200をかけて大きくしている。
グラフの設定とプロット
fig, (ax, ax2) = plt.subplots(2, 1, sharex=True)でfigを作成して縦にaxとax2を並べることになる。sharex=Trueでaxとax2のx軸の設定を共有させている。
つまり、数値が大きいデータを上のグラフ(ax)に表示して、その他の数値が小さいデータを下のグラフ(ax2)に表示する。
ax.plot(pts,’go-‘), ax2.plot(pts,’go-‘)で上下のグラフにptsを緑の丸と線でプロットする。
y軸範囲の設定
上のaxのグラフは、ax.set_ylim(1,np.max(pts)+1) とし、1〜ptsの最大値に+1した範囲で表示する。
下のax2のグラフは、ax2.set_ylim(0, .12) なので、0〜0.12の範囲で表示する。
グラフの枠と目盛りの設定
顔は楕円型(Ellipse)で作成する。
グラフ枠は上下左右がそれぞれ、ax.Spinesの[Top],[Bottom],[Left],[Right]で設定できる。
ここでは、上のグラフ(ax)の下の枠線と、下のグラフ(ax2)の上の枠線を、.set_visible(False)で非表示としている。
ax.xaxis.tick_top()で上のグラフの上の枠線に目盛りを表示している。
ax.tick_params(labeltop=False) で目盛りのラベルが表示されないようにしている。
ax2.xaxis.tick_bottom() で下のグラフ(ax2)の下枠線に目盛りを表示している。
軸省略線の設定
transform=ax.transAxesで、座標範囲を左下が (0, 0)、右上が (1, 1)の相対的な位置で指定できるようにしている。
color=’k’, lw=3で黒いlinewidth(線幅)が3の線。
clip_on=Falseでグラフの枠線からはみ出ても表示できるようにしている。
ax.plot((-d, +d), (0, 0), **kwargs) で上のグラフ(ax)の左下の省略線、ax.plot((1 - d, 1 + d), (0, 0), **kwargs)
で右下の省略線となる。
同様に下のグラフ(ax2)についても省略線を左上と右上に表示する。
グラフの保存
“broken_axis_scatter.png” はファイル名で、dpi=100は解像度の設定となる。
transparent = False 背景を透過させないようにして、bbox_inches = ‘tight’でラベルなどが見切れないようにする。
棒グラフの場合
![](https://sabopy.com/wp/wp-content/uploads/2019/01/broken_axis_bar.png)
省略線の設定
棒グラフでは、省略線を図全体に表示する設定としている。
コードをダウンロード(.pyファイル) コードをダウンロード(.ipynbファイル)参考
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9bWF0cGxvdGxpYiVFMyU4MSVBNyVFMyU4MyU5RSVFMyU4MyVCQyVFMyU4MiVBQiVFMyU4MyVCQyVFMyU4MiU5MiVFNiU5RSVBMCVFNyVCNyU5QSVFMyU4MiU4OCVFMyU4MiU4QSVFNCVCOCU4QSVFMyU4MSVBQiVFOCVBMSVBOCVFNyVBNCVCQSVFMyU4MSU5OSVFMyU4MiU4QiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9NmY0NTkyYzJlODE4YzEwMDkyNTZiZWJjMTE1NTljMzE&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBUYXRlamltYXJ1MTM3JnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz02ZmRiZWEyZmFkZjU1N2UwYmY2YmY5OTM0ZjRhYzRlMQ&blend-x=142&blend-y=486&blend-mode=normal&s=71ce5a865c86bfd83be5c730f01b6d59)
コメント