ChatGPTの回答
Pythonでmatplotlibを利用した以下を実現するサンプルコードを教えてください。
- 折れ線グラフである。
- X軸は10日連続の時系列データである。
- Y軸は10個の1~10程度のランダムな数値データである。
- X軸の軸ラベルの年月日の文字列はお互い重ならないように斜めに傾けて表示したい。
以下がPythonのサンプルコードになります。Matplotlibのpyplotモジュールを使い、X軸のラベルにはtick_params()関数を使い、rotationオプションを指定して斜めに表示させます。
Python
1省略

X軸ラベルの日付文字列がbottomからはみ出しています。bottomに余裕を持たせてください。
X軸のラベルがはみ出さないようにするには、グラフの下部に余白を設定する必要があります。これは、subplots_adjust()関数を使用して実現できます。以下が修正されたサンプルコードになります。
Python
1import random 2import matplotlib.pyplot as plt 3from datetime import datetime, timedelta 4 5# X軸の日付リストを生成6dates = [datetime(2023, 3, 20) + timedelta(days=i) for i in range(10)]7 8# Y軸のランダムな数値リストを生成9values = [random.randint(1, 10) for _ in range(10)]10 11# 折れ線グラフを作成12plt.plot(dates, values)13 14# X軸のラベルを斜めに表示15plt.xticks(rotation=45)16 17# グラフのタイトルと軸ラベルを設定18plt.title('Random Data')19plt.xlabel('Date')20plt.ylabel('Value')21 22# グラフの下部に余白を持たせる23plt.subplots_adjust(bottom=1.5)24 25# グラフを表示26plt.show()

subplotによる複数グラフも考慮して頂けないでしょうか。
宜しくお願い致します。
複数のグラフを表示するには、Matplotlibのsubplot()関数を使用します。以下が、2つのグラフを表示するサンプルコードになります。1つ目のグラフは、上部に表示され、2つ目のグラフは、下部に表示されます。
Python
1省略

ax1のグラフのX軸ラベルが斜めになっていません。ax2と同じく斜めにしてください。
申し訳ありません。ax1のX軸ラベルも斜めにするために、ax1のX軸の目盛りラベルのテキストを回転する必要があります。以下が修正されたサンプルコードになります。
Python
1省略

ax1のX軸ラベルがax2のために隠れてしまっています。ax1とax2の間にも余白を持たせてください。
問題解決のために、plt.subplots_adjust関数を利用して余白を調整しましょう。以下が修正されたサンプルコードになります。
Python
1import random 2import matplotlib.pyplot as plt 3from datetime import datetime, timedelta 4 5# X軸の日付リストを生成6dates = [datetime(2023, 3, 20) + timedelta(days=i) for i in range(10)]7 8# Y軸のランダムな数値リストを生成9values1 = [random.randint(1, 10) for _ in range(10)]10values2 = [random.randint(1, 10) for _ in range(10)]11 12# 2つのグラフを表示する13fig, (ax1, ax2) = plt.subplots(2, 1)14 15# 1つ目のグラフを作成16ax1.plot(dates, values1)17ax1.set_title('Random Data 1')18ax1.set_ylabel('Value 1')19 20# 1つ目のグラフのX軸ラベルを斜めにする21for tick in ax1.get_xticklabels():22 tick.set_rotation(45)23 24# 2つ目のグラフを作成25ax2.plot(dates, values2)26ax2.set_title('Random Data 2')27ax2.set_xlabel('Date')28ax2.set_ylabel('Value 2')29 30# X軸のラベルを斜めに表示31plt.xticks(rotation=45)32 33# グラフの下部と上部に余白を持たせる34plt.subplots_adjust(hspace=0.5, bottom=0.2, top=0.9)35 36# グラフを表示37plt.show()

惜しい。でもあとは調整すればいいか。

0 コメント