in vihds/plotting.py [0:0]
def xval_variable_parameters(res, ncols=2):
ndata = len(res.ids)
qs = dict(zip(res.q_names, res.q_values))
devices = np.unique(res.devices)
indexes = np.unique([n.split(".")[0] for n in res.q_names], return_index=True)[1]
all_ps = [[n.split(".")[0] for n in res.q_names][index] for index in sorted(indexes)]
ps = []
for i, p in enumerate(all_ps):
if p + ".mu" in qs:
if np.shape(qs[p + ".mu"])[0] == ndata:
ps.append(p)
if utils.is_empty(ps):
print("- No variables parameters: not producing plot")
return
print("- ", ps)
# Define data and device-dependent colours
cdict = dict(zip(devices, sns.color_palette()))
# Define geometry and figures
nrows = np.ceil(len(ps) / ncols).astype(int)
f, axs = pp.subplots(nrows, ncols, sharex=True, figsize=(6 * ncols, 2 * nrows))
f.suptitle("Local parameters", fontsize=14)
for i in range(nrows):
for j in range(ncols):
if nrows > 1:
ax = axs[i, j]
else:
ax = axs[j]
if (j + i * ncols) < len(ps):
name = ps[j + i * ncols]
for di in devices:
locs = np.where(res.devices == di)
x = res.ids[locs]
y = np.squeeze(qs["%s.mu" % name][locs])
err = np.squeeze(1 / qs["%s.prec" % name][locs])
ax.errorbar(x, y, err, fmt=".", color=cdict[di])
ax.set_title(name)
if i == (nrows - 1):
ax.set_xlabel("Data instance")
else:
if i > 0:
axs[i - 1, j].set_xlabel("Data instance")
ax.set_visible(False)
if nrows > 1:
axs[i, 0].set_ylabel("Parameter value")
else:
axs[0].set_ylabel("Parameter value")
f.tight_layout(rect=(0, 0, 1, 0.97))
sns.despine()
return f