'22/05/03更新:コマンドライン向け、JupyterLab向けの雛形コードを載せました。
本記事では、下図のような散布図を作成するコードを載せました。フォントサイズ、散布図、折れ線図、ラベル、タイトル、凡例の指定ができて、jpgファイルに保存する仕様です。
下図は、上図の元データです。「X軸にしたい列名」と、「Y軸にしたい列名をリスト」で指定することで作成できます。
▼コマンドプロンプト等のCUI向け雛形コード
コマンドライン引数でファイル名を指定します。例えば、本コードのファイル名を「csv2scatter.py」として、処理したいcsvファイル名が「data2.csv」の場合に次のようにして実行します。
$ python csv2scatter.py data2.csv
import os, sys
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.size'] = 20
def main():
df = pd.read_csv(file_path,
header = 0,
encoding = 'utf-8',
)
fig = plt.figure(dpi=80, figsize=(8,6))
plt.plot(df[x_name], df[y_name_list])
for y_name in y_name_list:
plt.scatter(df[x_name], df[y_name])
plt.yscale('linear')
plt.ylim(-200, 4000)
plt.xlabel('x')
plt.ylabel('y')
plt.title(file_path, fontsize=18)
plt.legend(y_name_list, loc='upper left', fontsize=18)
plt.grid(True)
plt.tight_layout()
plt.savefig(file_name + '.jpg')
plt.close()
if __name__ == '__main__':
file_path = sys.argv[1]
file_name = os.path.splitext(os.path.basename(file_path))[0]
x_name = 'x'
y_name_list = ['y1', 'y2', 'y3']
main()
print("finished")
▼JupyterLabのようなインタラクティブ向け雛形コード
import os, sys
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.size'] = 20
file_path = 'data2.csv'
file_name = os.path.basename(file_path)
print(file_name)
root, ext = os.path.splitext(file_name)
print(root, ext)
df = pd.read_csv(file_path,
header = 0,
encoding = 'utf-8',
)
df
x_name = 'x'
y_name_list = ['y1', 'y2', 'y3']
fig = plt.figure(dpi=80, figsize=(8,6))
plt.plot(df[x_name], df[y_name_list])
for y_name in y_name_list:
plt.scatter(df[x_name], df[y_name])
plt.yscale('linear')
plt.ylim(-200, 4000)
plt.xlabel('x')
plt.ylabel('y')
plt.title(file_path, fontsize=18)
plt.legend(y_name_list, loc='upper left', fontsize=18)
plt.grid(True)
plt.tight_layout()
plt.show()
※(参考)2軸設定をしたい場合の雛形コードは次のリンク先を参照下さい。
hk29.hatenablog.jp
以上
<広告>
リンク
リンク