'22/09/10更新:棒グラフの値の表示位置設定とグリッド設定について、引数を明記しました(グラフデザインの柔軟性を高めた雛形コードにするため)。
本記事では、下図のような横に並べる棒グラフの雛形コードを載せました。
上記のデータ元は、下図のようなcsvファイルです。凡例はcsvファイル別を表し、x軸ラベルは各ファイルの行方向のデータです。
■本プログラム
#!/usr/bin/env python # coding: utf-8 # In[1]: import glob import pandas as pd import numpy as np import matplotlib.pyplot as plt plt.rcParams['font.size'] = 18 # グラフの基本フォントサイズの設定 import japanize_matplotlib file_path_list = glob.glob('*.csv') file_path_list # In[2]: df1 = pd.read_csv(file_path_list[0]) df1 # In[3]: category_list = df1['Subject'].tolist() category_list # In[4]: # プロットする位置を指定するx座標の作成 x1 = np.arange(len(category_list)).tolist() x2 = list(map(lambda x: x + 0.3, x1)) x3 = list(map(lambda x: x + 0.6, x1)) x_position_list = [x1, x2, x3] print(x_position_list) # In[20]: y_name = 'score' my_color_list = ['r', 'y', 'b'] fig, ax = plt.subplots(figsize = (13, 4)) for i, (_file, _x_pos) in enumerate(zip(file_path_list, x_position_list)): _df = pd.read_csv(_file) bar = ax.bar(_x_pos, # x座標 _df[y_name], # 棒グラフ width = 0.3, # 線幅 color = my_color_list[i], alpha = 0.5, # 透明度 edgecolor = my_color_list[i], label = _file, # 凡例 ) # バーの値を表記 ax.bar_label(bar, color = 'k', label_type = 'edge', # center
padding = -25) plt.legend(bbox_to_anchor=(1,1)) # 凡例の位置 plt.xticks(x2, category_list) # x軸のラベル plt.ylabel(y_name) # y軸のラベル plt.title('成績') # 題目 plt.grid(axis = 'y', linestyle = 'dashed', color = 'gray') # グリッド設定 plt.show() plt.savefig(y_name + '.jpg')
以上
<広告>
リンク
リンク