本記事では、下図左のような3列のデータから、下図右のような等高線図を作成する雛形コードを載せました。
■本プログラム
import pandas as pd
import numpy as np
from scipy.interpolate import griddata
import matplotlib.pyplot as plt
import japanize_matplotlib
plt.rcParams['font.size'] = 14
file_path = 'data.csv'
df = pd.read_csv(file_path)
x_name = 'x'
y_name = 'y'
z_name = 'z'
my_title = f'{z_name}の等高線図'
x = df[x_name].values
y = df[y_name].values
z = df[z_name].values
my_N = 100
xi, yi = np.meshgrid(np.linspace(min(x), max(x), my_N), np.linspace(min(y), max(y), my_N))
zi = griddata((x, y), z, (xi, yi), method='linear')
plt.figure(figsize=(8, 6))
my_split = 10
contour = plt.contour(xi, yi, zi, levels=my_split, linewidths=0.5, colors='k')
contourf = plt.contourf(xi, yi, zi, levels=my_split, cmap='cool')
plt.clabel(contour, inline=True, fontsize=12)
plt.xlabel(f'{x_name}軸', fontsize=16)
plt.ylabel(f'{y_name}軸', fontsize=16)
plt.title(my_title)
plt.colorbar(label=z_name)
plt.grid(linestyle='dotted', alpha=0.5, color='k')
plt.tight_layout()
plt.show()
plt.savefig(f'{z_name}_contour.png')
もしデータ点数が大量にあって、作図に非常に時間を要する場合、データ点数を間引いて線形補間により作図する雛形コードは次のリンク先を参照ください。
hk29.hatenablog.jp
以上
<広告>
リンク
リンク
リンク