RPAの結果を解析する

nested analysisの計算結果をhtmlで保存
f:id:seinzumtode:20201014155346p:plain
f:id:seinzumtode:20201014155430p:plain

htmlがワンライナーで見にくいので、整形する
www.freeformatter.com

htmlをテキストエディタで開いて

を抜き出し、CSVに変換する
www.convertcsv.com

Jupyter labからcsvを読み込み、pandasオブジェクトに変換してから3D表示する。
X軸を混合比O/F、Y軸を燃焼圧力Pc、Z軸を真空中比推力Ispとした。

import numpy as np
import pandas as pd
%matplotlib widget
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

mr = data["Ratio, O/F"]
pc = data["pc, MPa"]
Isp = data["Is vac, s"]
data = pd.read_csv('data.csv')
print(data)

df = pd.DataFrame(list(zip(mr,pc,Isp)),columns=['MR','Pc','Isp'])
df.dropna(subset = ["MR","Pc","Isp"], inplace=True)
df = df[~df.Isp.str.contains("-")]
pd.options.display.max_rows = 4000
df['MR'] = df['MR'].astype(float) 
df['Pc'] = df['Pc'].astype(float) 
df['Isp'] = df['Isp'].astype(float) 
print(df)

plt.rcParams['figure.figsize'] = [12, 8]

ax = plt.figure().gca(projection='3d')
ax.scatter(df.MR, df.Pc, df.Isp)
ax.set_xlabel('O/F')
ax.set_ylabel('Pc')
ax.set_zlabel('Isp vacuum')
plt.show()

f:id:seinzumtode:20201014162434p:plain