mirror of
https://github.com/wassname/moral-maps.git
synced 2026-09-09 11:27:22 +08:00
maps: respondent-haze ipsative map + glossed axes (port from mft_honesty)
plot_ipsative_pca gains an optional respondents arg: when given it fits the ipsative PCA basis on the individual cloud (3902 Atari respondents) and scatters them behind the society dots, with an envelope-core crop, matching the mft_honesty fig_pca_ipsative the project standardized on. Axis labels carry a foundation-loading gloss. respondents=None keeps the old society-only behavior. Bundles atari_study2_raw.csv + a respondent_profiles loader (keying verbatim from Atari Code_Study2.R) so tinymfv owns the data, no mft_honesty dependency. plot_steer_showcase passes respondents for mfq2 only. Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
This commit is contained in:
@@ -87,9 +87,12 @@ def plot_ordinal(run_dir: Path, out: Path, name: str, vec_label: str, C: float)
|
||||
|
||||
countries, Mfrac = human_matrix(instr)
|
||||
labels = (f"base (c=0)", f"+C={C:+.2f}", f"-C={-C:+.2f}")
|
||||
# mfq2 has per-respondent Atari data -> scatter the individual cloud behind the societies and
|
||||
# fit the ipsative PCA on PEOPLE (better-conditioned, the real envelope). Other instruments: None.
|
||||
respondents = T.maps.respondent_profiles(dims, instr.scale_max) if name == "mfq2" else None
|
||||
figm = T.maps.plot_ipsative_pca(instr, dims, countries, Mfrac,
|
||||
_frac(base, instr.scale_max), _frac(pos, instr.scale_max),
|
||||
_frac(neg, instr.scale_max), labels=labels)
|
||||
_frac(neg, instr.scale_max), respondents=respondents, labels=labels)
|
||||
paths = [T.maps.save_both(figm, out / name, "map_pca_ipsative")]
|
||||
plt.close(figm)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user