Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Matplotlib】xtickの値に関係なく等間隔に表示する方法

Matplotlibで目盛り(xtick)の実際の値に関係なく、等間隔に配置したい場合は、set_ticks()メソッドとset_ticklabels()メソッドを組み合わせて使用します。この手法を使えば、データポイントが不均等な間隔であっても、グラフ上では均一に並べて表示できます。

手順

  • 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
  • numpyを使って xy のデータポイントを作成します。
  • subplots() メソッドで図とサブプロットのセットを作成します。
  • 1つ目の軸(ax1)に xy のデータポイントをプロットします。
  • xaxis.set_ticks() メソッドで xtick を設定します。この場合、目盛りは値に応じた位置に配置されます。
  • 2つ目の軸(ax2)にも同様に xy のデータポイントをプロットします。
  • xaxis.set_ticks() で連番(インデックス)を目盛り位置として指定し、xaxis.set_ticklabels() で元の値をラベルとして設定します。これにより、値に関係なく目盛りが等間隔になります。
  • show() メソッドで図を表示します。

コード例

import numpy as np
from matplotlib import pyplot as plt

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

x = np.array([1, 1.5, 3, 5, 6])
y = np.power(2, x)

fig, (ax1, ax2) = plt.subplots(2, 1)
ax1.plot(x, y)
ax1.xaxis.set_ticks(x)

ax2.plot(x, y)
ax2.xaxis.set_ticks(range(len(x)))
ax2.xaxis.set_ticklabels(x)

plt.show()

実行結果

上記のコードを実行すると、次のような出力が得られます。

【Matplotlib】xtickの値に関係なく等間隔に表示する方法

解説

1つ目のグラフ(ax1)では、set_ticks(x) によって目盛りが実際のx値の位置(1、1.5、3、5、6)に配置されるため、間隔が不均等になります。一方、2つ目のグラフ(ax2)では、set_ticks(range(len(x))) で0から始まる連番を目盛りの位置に指定し、set_ticklabels(x) で元の数値をラベルとして表示しています。その結果、データの値の大きさに関わらず、すべての目盛りが等間隔に整列して見やすくなります。カテゴリカルなデータや不均等なサンプリング間隔のデータを可視化する際に特に有効なテクニックです。

  1. Matplotlibで目盛りラベルをすべて表示する方法

    Matplotlibでグラフ上のすべてのラベル値を表示したい場合は、set_xticklabels() メソッドと set_yticklabels() メソッドを使用します。この記事では、具体的な手順とコード例を使って、その方法をわかりやすく解説します。実装の手順軸の目盛りとして使用できる数値のリスト(x)を作成します。subplot() 関数を使用して軸オブジェクトを取得します。subplot() は現在の図にサブプロットを追加するための便利な関数です。set_xticks メソッドと set_yticks メソッドを使い、手順1で作成したリスト x を指定して、それぞれX軸とY軸の目盛り位

  2. Python MatplotlibでY軸の値(目盛りラベル)を指定する方法

    PythonのMatplotlibでは、yticks()メソッドを使うことで、Y軸に表示する値や目盛りラベルを自由に指定できます。X軸の場合はxticks()を使用します。この記事では、具体的な手順とサンプルコードを通して、軸の目盛りをカスタマイズする方法を解説します。 Y軸の値を指定する手順 以下の手順で、Matplotlibのグラフに任意の目盛りラベルを設定できます。 numpyを使ってxおよびyのデータポイントを作成します。 軸に表示したい値として、文字列のリストを作成します。 xticks()メソッドとyticks()メソッドを使用し、それぞれX軸・Y軸の目盛りの位置とラベルを指定し