## 論文スタイル
データファイル (txt
や csv
, tsv
など) から、オーソドックスな見た目のプロットを生成する例です。
実行
python plot.py <filename> --save=[True|False]
この例では、指数表記を スタイルで表示します。
plot.py
import matplotlib.pyplot as plt
import matplotlib.ticker as ptick
import pandas as pd
import argparse as ap
def main():
args = get_args()
df = get_data()
exec_plot(df, args)
# コマンドライン引数
def get_args():
parser = ap.ArgumentParser()
parser.add_argument("filename", type=str) # ファイル名
parser.add_argument("--save", type=bool, default=True) # 画像保存の有無
args = parser.parse_args()
return args
# データファイルから DataFrame を生成
def get_data(args):
df = pd.read_csv(args.filename, comment='#', header=None, sep='\t', encoding="utf-8", engine="python")
return df
# プロット実行
def exec_plot(df, args):
plt.rcParams['font.family'] = 'Times New Roman' # フォント
plt.rcParams['mathtext.fontset'] = 'cm' # 数式フォント
plt.rcParams["font.size"] = 16 # フォントサイズ
plt.rcParams['xtick.labelsize'] = 14 # x軸のフォントサイズ
plt.rcParams['ytick.labelsize'] = 14 # y軸のフォントサイズ
plt.rcParams['axes.linewidth'] = 1.0 # サブプロットの囲み枠の太さ
plt.rcParams['axes.grid'] = True # Grid の有無
plt.rcParams["legend.fancybox"] = False # 角丸
# figure と axis の追加
fig = plt.figure(figsize=(8, 8))
ax = fig.add_subplot(1, 1, 1)
# 指数表記を a * 10^b に変更
ax.xaxis.set_major_formatter(ptick.ScalarFormatter(useMathText=True))
ax.yaxis.set_major_formatter(ptick.ScalarFormatter(useMathText=True))
ax.ticklabel_format(style='sci', axis='both')
# 軸ラベル(r"$formula$" で TeX が使える)
ax.set_xlabel(r"$x$")
ax.set_ylabel(r"$y$")
# プロット
ax.plot(df["Coordinate"], df["Energy"], color="red")
ax.scatter(df["Coordinate"], df["Energy"], color="red")
# 画像の保存
if (args.save):
fig.savefig(f'{args.filename}.png', bbox_inches="tight", pad_inches=0.05)
# 表示
plt.show()
# 実行
if "__name__" == "__main__":
main()
### 参考
Matplotlibで綺麗な論文用のグラフを作る - Qiita
はじめに論文をここ数ヶ月間書いていました。。おかげさまでいろいろ手がつかず、モデルベース強化学習系の勉強もしたかったのですがとにかく大変でした。さくさくかけるドクターの方々に尊敬しかありません。…
qiita.com
MatplotlibのY軸の目盛りを指数表記(10のN乗表記)に変更する - Qiita
##ex1)グラフを描画するimport sqlalchemyimport pandas as pdimport matplotlib.pyplot as plt# SQLAlchemy初期…
qiita.com
記事がありません