【matplotlib】凡例を横並びにする方法[Python]

  • URLをコピーしました!
目次

matplotlib

前回、Pythonのmatplotlibでannotateで矢印と注釈(アノテーション)をグラフに表示する方法を紹介しました。

今回は凡例を横並びにする方法を紹介します。

とりあえず基本となるプログラムをこんな感じで準備してみました。

import matplotlib.pyplot as plt

x = range(0, 100)
y1 = [i for i in x]
y2 = [i*2 for i in x]
y3 = [i*3 for i in x]

fig = plt.figure()
plt.clf()

plt.plot(x, y1, label="y1")
plt.plot(x, y2, label="y2")
plt.plot(x, y3, label="y3")

plt.legend()
plt.show()

実行結果

「y1」 、「y2」、「y3」という3本の線があるグラフです。

デフォルトでは凡例は縦に並んでいます。

それでは始めていきましょう。

凡例を横に並べる方法

凡例を横に並べるには「plt.legend()」に「ncol=凡例の数」を追加します。

import matplotlib.pyplot as plt

x = range(0, 100)
y1 = [i for i in x]
y2 = [i*2 for i in x]
y3 = [i*3 for i in x]

fig = plt.figure()
plt.clf()

plt.plot(x, y1, label="y1")
plt.plot(x, y2, label="y2")
plt.plot(x, y3, label="y3")

plt.legend(ncol=3)
plt.show()

実行結果

注意すべきは「ncol」で指定する数値が凡例の数より少ない場合、完全には横並びにならないことです。

import matplotlib.pyplot as plt

x = range(0, 100)
y1 = [i for i in x]
y2 = [i*2 for i in x]
y3 = [i*3 for i in x]

fig = plt.figure()
plt.clf()

plt.plot(x, y1, label="y1")
plt.plot(x, y2, label="y2")
plt.plot(x, y3, label="y3")

plt.legend(ncol=2)
plt.show()

実行結果

ちなみにncolで指定した数値が、実際の凡例の数よりも多い場合は特に問題ありません。

import matplotlib.pyplot as plt

x = range(0, 100)
y1 = [i for i in x]
y2 = [i*2 for i in x]
y3 = [i*3 for i in x]

fig = plt.figure()
plt.clf()

plt.plot(x, y1, label="y1")
plt.plot(x, y2, label="y2")
plt.plot(x, y3, label="y3")

plt.legend(ncol=4)
plt.show()

実行結果

次回は凡例のタイトル、背景色、枠線の表示や変更方法を紹介していきます。

ではでは今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次