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

SeabornでX軸の整数値(int)を日時(datetime)に変換してプロットする方法

matplotlibとSeabornを組み合わせてグラフを作成する際、X軸の値がミリ秒単位のタイムスタンプなどの整数値になっていることがあります。このままでは読みにくいため、pd.to_datetime() を使って整数値を日時形式に変換し、見やすいラベルとして表示する方法を解説します。

実装の手順

  • 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。

  • 3つの列(marks・names・dob)を持つデータフレーム df を作成します。

  • X軸に整数型の dob 列を指定して countplot を作成します。

  • X軸の目盛りラベルを取得し、pd.to_datetime() で日時形式に変換してから再設定します。

  • show() メソッドで図を表示します。

コード例

import seaborn as sns
from matplotlib import pyplot as plt
import pandas as pd
import numpy as np

# 図のサイズを設定
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True

# 3列のデータフレームを作成
df = pd.DataFrame([
    [23, 'James', 1259969793926],
    [39, 'Jimmy', 1259969793927],
    [56, 'Jack', 1259969793929],
    [60, 'Tom', 1259969793928],
    [80, 'Tim', 1259969793939]
], columns=['marks', 'names', 'dob'])

# dob列をX軸に指定してcountplotを作成
ax = sns.countplot(x="dob", data=df)

# X軸の目盛りをミリ秒から日時形式に変換
ax.set_xticklabels(
    [
        pd.to_datetime(tm, unit='ms').strftime('%Y-%m-%d %H:%M:%S')
        for tm in ax.get_xticks()
    ], rotation=45)

# グラフを表示
plt.show()

コードのポイント

  • unit='ms':タイムスタンプがミリ秒単位であることを指定しています。秒単位の場合は 's' を指定してください。

  • ax.get_xticks():現在のX軸の目盛り位置(数値)を取得します。

  • strftime('%Y-%m-%d %H:%M:%S'):日時を「年-月-日 時:分:秒」の形式の文字列に整形します。

  • rotation=45:長い日時ラベルが重ならないよう、45度傾けて表示します。

出力結果

上記のコードを実行すると、X軸の目盛りが「2022-01-04 21:36:33」のような日時形式のラベルで表示されたカウントプロットが出力されます。

SeabornでX軸の整数値(int)を日時(datetime)に変換してプロットする方法

  1. Seabornで2つのグラフを横に並べてプロットする方法(Matplotlib)

    データ分析では、複数のグラフを1つの図の中に並べて比較できると非常に便利です。この記事では、SeabornとMatplotlibを組み合わせて、2つのグラフを横並び(1行2列)で表示する方法を解説します。 実装の流れ 2つのグラフを並べて描画するには、以下の手順を実行します。 plt.subplots(1, 2) を使い、figureサイズ(7, 7)で1行2列のサブプロットを作成します。 Pandasを使って、col1 と col2 のキーを持つデータフレームを作成します。 countplot() メソッドを使用し、カテゴリごとの観測値の件数を棒グラフで可視化します。 subplots_a

  2. Matplotlibで任意のデータを使って4Dプロットを作成する方法

    Matplotlibでは、x・y・z の3つの座標データに加え、c(色) を第4の次元として割り当てることで、いわゆる「4Dプロット」を実現できます。これは実際には3D散布図にカラーマップを組み合わせたものであり、点の位置が3次元情報を、色がもう1つの変数を表現します。以下の手順に従うことで、標準正規分布に従うランダムなデータポイントを使った4Dプロットを簡単に作成できます。手順figure() メソッドを使用して、新しい図を作成するか、既存の図をアクティブ化します。サブプロット構成の一部として、3D投影(projection=3d)を指定した Axes を追加します。NumPy を使って x