1
0
Fork 0
mirror of https://github.com/Findus23/collision-analyisis-and-interpolation.git synced 2024-09-18 14:03:51 +02:00
collision-analyisis-and-int.../cov.py
2021-10-12 15:45:43 +02:00

50 lines
1.5 KiB
Python

import numpy as np
from matplotlib import pyplot as plt
from matplotlib.axes import Axes
from pathlib import Path
from simulation_list import SimulationList
plt.style.use('dark_background')
simulations = SimulationList.jsonlines_load(Path("rsmc_dataset.jsonl"))
np.set_printoptions(linewidth=1000, edgeitems=4)
x = simulations.as_matrix
labels = ["impact angle $\\alpha$", " collision speed $v$", "projectile mass", "mass fraction $\\gamma$",
"target water fraction", "projectile water fraction"]
matrixlabels = labels + ["water retention"]
print(x)
print(x.shape)
corr = np.corrcoef(x.T)
print(np.cov(x.T))
X = np.copy(x)
X -= X.mean(axis=0)
manual = np.dot(X.T, X.conj()) / (x.shape[0] - 1)
assert np.allclose(manual, np.cov(x.T))
print(corr.shape)
simple_cov = corr[-1, :-1]
# plot correclation matrix
plt.matshow(corr)
# plt.xticks(range(len(matrixlabels)), matrixlabels, rotation=90)
# plt.yticks(range(len(matrixlabels)), matrixlabels)
# plt.colorbar()
# plt.savefig("correlation.pdf", transparent=True)
# plt.tight_layout()
# plt.show()
plt.close()
ax = plt.gca() # type:Axes
print(len(labels), len(simple_cov))
print(simple_cov)
plt.barh(range(len(simple_cov)), simple_cov,color="#B3DE69")
# ax.set_xticks(index + bar_width / 2)
ax.set_yticklabels([0] + labels)
ax2 = ax.twinx() # type:Axes
ax2.set_yticklabels([0] + ["({:.2f})".format(a) for a in simple_cov])
ax2.set_ylim(ax.get_ylim())
plt.tight_layout()
plt.savefig("../arbeit/images/cov.pdf",transparent=True)
plt.show()