pythonでグラフをプロットした際に何も表示されません

python

1import pandas as pd 2import numpy as np 3import matplotlib.pyplot as plt 4from matplotlib.dates import DateFormatter, HourLocator 5 6# CSVファイルからデータを読み込む7df_1 = pd.read_csv('.\\practice-py\\altitude.csv', header=None)8data = df_1.values 9 10# 観測データを2列目から64列目までのデータとして取得11ary = []12for i in range(1, 145):13 row = []14 for j in range(2, 65):15 row.append(data[i][j])16 ary.append(row)17 18# Y軸の値を設定19y_values = np.arange(0.3, 0.3 + len(ary[0]) * 0.15, 0.15)20 21# 時刻データの範囲を設定22start_time = '2004-04-20 00:05'23end_time = '2004-04-20 23:55'24date_range = pd.date_range(start=start_time, end=end_time, freq='10T')25 26num_samples = len(ary)27sampled_ary = ary[:num_samples]28sampled_dates = date_range[:num_samples]29 30# DataFrame を作成31df = pd.DataFrame(sampled_ary, columns=['観測データ'+str(i+1) for i in range(len(sampled_ary[0]))])32df['時刻'] = sampled_dates 33 34# 時刻をインデックスに設定35df = df.set_index('時刻')36 37# データを2D配列に変換38data_array = np.array([row for row in df.values])39 40# X軸の値(時間)を作成41X, Y = np.meshgrid(pd.to_datetime(df.index).astype(np.int64) // 10**9, y_values)42 43# 999.0 の値を NaN に置き換え44data_array[data_array == 999.0] = np.nan 45 46# 各高度でのデータ数を計算(999.0 を除外)47data_count = np.sum(np.array(sampled_ary) != 999.0, axis=0)48 49# プロットを作成50fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 6), gridspec_kw={'width_ratios': [4, 1]})51 52# 高度プロファイルの棒グラフをプロット53ax2.plot(data_count, y_values, color='black', linestyle='-')54ax2.set_title('Data Number')55ax2.set_ylim(0, 5)56 57# 等高線図を作成58contour = ax1.contourf(X, Y, data_array.T, cmap='jet', levels=100)59plt.colorbar(contour, ax=ax1, label='観測データの値')60 61# x軸のフォーマットを設定(時刻のみ表示)62date_format = DateFormatter('%H')63ax1.xaxis.set_major_formatter(date_format)64 65# x軸の目盛りを5時間間隔の主目盛りと1時間間隔の補助目盛りに設定66major_locator = HourLocator(interval=5)67minor_locator = HourLocator(interval=1)68ax1.xaxis.set_major_locator(major_locator)69ax1.xaxis.set_minor_locator(minor_locator)70 71# x軸の範囲を設定(0からスタートする)72ax1.set_xlim(pd.Timestamp(start_time), pd.Timestamp(end_time))73 74# グラフの設定75ax1.set_xlabel('LT')76ax1.set_ylabel('Height (km)')77ax1.set_title('BLR 20040420')78ax1.set_ylim(0, 5)79 80plt.tight_layout()81plt.show()82

コメントを投稿

0 コメント