10
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[Python3] matplotlibで折れ線グラフで縦軸(y軸)を3つ以上書く方法

Last updated at Posted at 2019-09-20

横軸は同じだけどスケールの異なるデータを3つ以上描きたい時ってたくさんあると思います。
この記事ではy軸が3つの折れ線グラフを描きます。

図で言うと上の図を下のようにします。
3axis_1.png
3axis_2.png

データはこれを使います。

index	A	  B	   C
0	  2	  2000  4000000
1	  3	  1000  3000000
2	  6	  700	 4200000
3	  12  300	 3600000
4	  5	  500	 2500000
5	  3	  1400  4200000
6	  5	  800	 4000000
7	  6	  300	 1800000
8	  8	  500	 4000000

↑indexを横軸にして、A, B, Cの折れ線グラフを書くなら縦軸のスケールを変えたほうがいいですよね。

そんなわけでやっていきましょう。 いろいろimport
import pandas as pd 
import matplotlib as mpl
import matplotlib.pyplot as plt
・キャンバスを定義します。
fig=plt.figure() 
fig.subplots_adjust(bottom=0.2)
fig.subplots_adjust(right=0.85)
fig.subplots_adjust(left=0.15)
・x軸は全部共通にします。  ax2, ax3のx軸をax1と共通にするおまじないです。
ax1=fig.add_subplot(1,1,1)
ax2=ax1.twinx()
ax3=ax1.twinx()
・x軸の名前とか凡例の名前とかをつけます.
ax1.set_xlabel('index',fontsize=18)
ax1.set_ylabel('A',fontsize=18 ,color='red')
ax2.set_ylabel('B',fontsize=18 ,color='green')
ax3.set_ylabel('C',fontsize=18 ,color='blue') 
**・これが大事です。これをつけることで図の右側に重ならないように3つめの軸を書くことができます。2行目の1.2を変えると場所を調整できます。**
rspine = ax3.spines['right']
rspine.set_position(('axes', 1.2))
・グラフを書いて終わりです。
ax1.plot(df['A'],color='red',label="A")
ax2.plot(df['B'],color='green',label="B") 
ax3.plot(df['C'],color='blue',label="C") 

h1, l1 = ax1.get_legend_handles_labels()
h2, l2 = ax2.get_legend_handles_labels()
h3, l3 = ax3.get_legend_handles_labels()
ax1.legend(h1 + h2 +h3, l1 + l2 +l3 ,loc='upper right')

上記に示したデータを使えばこのような図ができるはずです。
3axis_2.png

参考
https://matplotlib.org/3.1.1/gallery/ticks_and_spines/spine_placement_demo.html

10
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?