💄 Adds colors to violins
This commit is contained in:
parent
ab0d117c70
commit
dc2e417969
30
analyze.py
30
analyze.py
@ -15,6 +15,9 @@ args = parser.parse_args()
|
|||||||
graph = args.graph
|
graph = args.graph
|
||||||
save = args.save
|
save = args.save
|
||||||
|
|
||||||
|
colors = ["lightblue", "lightgreen", "lightcoral"]
|
||||||
|
edge_colors = ["blue", "green", "red"]
|
||||||
|
|
||||||
|
|
||||||
# source: mostly ChatGPT (ain't no way i'm writing this shit myself)
|
# source: mostly ChatGPT (ain't no way i'm writing this shit myself)
|
||||||
def analyze(name: str, data: List[np.ndarray]):
|
def analyze(name: str, data: List[np.ndarray]):
|
||||||
@ -81,12 +84,12 @@ def analyze(name: str, data: List[np.ndarray]):
|
|||||||
p_value = posthoc_results.loc[idx1 + 1, idx2 + 1]
|
p_value = posthoc_results.loc[idx1 + 1, idx2 + 1]
|
||||||
|
|
||||||
results.append({
|
results.append({
|
||||||
"Group 1": group1,
|
"Skupina 1": group1,
|
||||||
"Group 2": group2,
|
"Skupina 2": group2,
|
||||||
"Effect Size": f"{effect_size:.4f}",
|
"Veľkosť účinku": f"{effect_size:.4f}",
|
||||||
"Mean Difference": f"{mean_diff:.4f}",
|
"Rozdiel priemerov": f"{mean_diff:.4f}",
|
||||||
"Median Difference": f"{median_diff:.4f}",
|
"Rozdiel mediánov": f"{median_diff:.4f}",
|
||||||
"Post-Hoc p-value": f"{p_value:.4f}"
|
"Post-Hoc p-hodnota": f"{p_value:.4f}"
|
||||||
})
|
})
|
||||||
|
|
||||||
results_df = pd.DataFrame(results, dtype="object")
|
results_df = pd.DataFrame(results, dtype="object")
|
||||||
@ -113,18 +116,27 @@ def plot_violin(data, labels, Fs, ps, title):
|
|||||||
index = j * 2 + k
|
index = j * 2 + k
|
||||||
step = 1 if index > 0 else 0.5
|
step = 1 if index > 0 else 0.5
|
||||||
|
|
||||||
axs[j, k].violinplot(data[index], showmedians=True, showmeans=True)
|
parts = axs[j, k].violinplot(data[index], showmedians=True, showmeans=True)
|
||||||
axs[j, k].set_title(grade_names[index])
|
axs[j, k].set_title(grade_names[index])
|
||||||
axs[j, k].set_xlabel(title, fontweight="bold")
|
axs[j, k].set_xlabel(title, fontweight="bold")
|
||||||
axs[j, k].set_ylabel(grade_name_labels[index], fontweight="bold")
|
axs[j, k].set_ylabel(grade_name_labels[index], fontweight="bold")
|
||||||
axs[j, k].set_xticks(np.arange(1, len(labels) + 1), labels=labels)
|
axs[j, k].set_xticks(np.arange(1, len(labels) + 1), labels=labels)
|
||||||
axs[j, k].set_yticks(np.arange(1, 5.01, step))
|
axs[j, k].set_yticks(np.arange(1, 5.01, step))
|
||||||
|
|
||||||
|
parts["cmeans"].set_color("red")
|
||||||
|
parts["cmedians"].set_color("green")
|
||||||
|
|
||||||
|
for i, part in enumerate(parts["bodies"]):
|
||||||
|
part.set_facecolor(colors[i % len(colors)])
|
||||||
|
part.set_edgecolor(edge_colors[i % len(edge_colors)])
|
||||||
|
|
||||||
F = round(Fs[index], 2)
|
F = round(Fs[index], 2)
|
||||||
p = round(ps[index], 4)
|
p = round(ps[index], 4)
|
||||||
axs[j, k].text(0.01, 0.99, f"F-stat: {F:.2f}\np-val: {p:.4f}", ha="left", va="top",
|
axs[j, k].text(0.01, 0.99, f"F-stat: {F:.2f}\np-val: {p:.4f}", ha="left", va="top",
|
||||||
transform=axs[j, k].transAxes,
|
transform=axs[j, k].transAxes,
|
||||||
fontweight="bold")
|
fontweight="bold")
|
||||||
|
axs[j, k].text(0.99, 0.99, f"Na ľavo - priemer (červená)\nNa pravo - medián (zelená)", ha="right", va="top",
|
||||||
|
transform=axs[j, k].transAxes)
|
||||||
|
|
||||||
medians = list([np.median(a) for a in data[index]])
|
medians = list([np.median(a) for a in data[index]])
|
||||||
means = list([a.mean() for a in data[index]])
|
means = list([a.mean() for a in data[index]])
|
||||||
@ -132,8 +144,8 @@ def plot_violin(data, labels, Fs, ps, title):
|
|||||||
median = round(medians[l], 2)
|
median = round(medians[l], 2)
|
||||||
mean = round(means[l], 2)
|
mean = round(means[l], 2)
|
||||||
# left - mean, right - median
|
# left - mean, right - median
|
||||||
axs[j, k].text(l + 1.13, median - 0.05, f"{median}")
|
axs[j, k].text(l + 1.13, median - 0.05, f"{median}", color="green")
|
||||||
axs[j, k].text(l + 0.90 - len(labels) * 0.065, mean - 0.05, f"{mean}")
|
axs[j, k].text(l + 0.90 - len(labels) * 0.065, mean - 0.05, f"{mean}", color="red")
|
||||||
|
|
||||||
fig.tight_layout()
|
fig.tight_layout()
|
||||||
if save != "":
|
if save != "":
|
||||||
|
Loading…
x
Reference in New Issue
Block a user