overton analysis explorer page push
This commit is contained in:
@@ -185,18 +185,15 @@ def build_compass_tab(db_path: str, window_size: str) -> None:
|
|||||||
|
|
||||||
with st.expander("Overton Window Context"):
|
with st.expander("Overton Window Context"):
|
||||||
st.markdown(
|
st.markdown(
|
||||||
"The SVD compass visualizes the dynamics behind the "
|
"The SVD compass reflects changes in voting patterns after 2024.\n\n"
|
||||||
"**widening of the Overton window** in the Dutch parliament.\n\n"
|
"Centrist support for right-wing motions rose from 25% to 51%, "
|
||||||
"Centrist support for right-wing motions rose from 25% to 51% after 2024, "
|
"while support for left-wing motions stayed flat.\n\n"
|
||||||
"while support for left-wing motions stayed flat. The window widened: "
|
"Centrist parties (D66, CDA, CU, NSC) moved left on both axes "
|
||||||
"more right-wing positions became acceptable.\n\n"
|
"while right-wing parties stayed put. Right-wing parties filed milder "
|
||||||
"But **centrist parties** (D66, CDA, CU, NSC) moved **left on both axes** "
|
"motions, so centrists could vote along more often "
|
||||||
"while right-wing parties stayed put. This pattern of "
|
|
||||||
'"acceptance without conversion" means right-wing parties filed milder '
|
|
||||||
"motions, and centrists could vote along more often, "
|
|
||||||
"without shifting ideologically to the right.\n\n"
|
"without shifting ideologically to the right.\n\n"
|
||||||
"[Read the full analysis](../reports/overton_window/overton_window.qmd)\n\n"
|
"[Read the full analysis](../reports/overton_window/overton_window.qmd)\n\n"
|
||||||
"Try the **Stemwijzer quiz** to see which MP matches your positions."
|
"Try the Stemwijzer quiz to see which MP matches your positions."
|
||||||
)
|
)
|
||||||
st.markdown("---")
|
st.markdown("---")
|
||||||
st.markdown(
|
st.markdown(
|
||||||
|
|||||||
@@ -17,9 +17,9 @@ def build_overton_tab(db_path: str) -> None:
|
|||||||
"""Build the Overton Window tab."""
|
"""Build the Overton Window tab."""
|
||||||
st.subheader("Overton Window Analysis")
|
st.subheader("Overton Window Analysis")
|
||||||
st.markdown(
|
st.markdown(
|
||||||
"The Overton window **widened** after 2024: centrist support for right-wing "
|
"After 2024, centrist support for right-wing motions increased from 25% to 51%, "
|
||||||
"motions rose from 25% to 51%, while support for left-wing motions stayed flat. "
|
"while support for left-wing motions remained flat. "
|
||||||
"Right-wing parties filed milder motions, allowing centrists to vote along "
|
"Right-wing parties filed milder motions, so centrists could vote along "
|
||||||
"without shifting ideologically."
|
"without shifting ideologically."
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -141,8 +141,8 @@ def _render_summary_stats(con: duckdb.DuckDBPyConnection) -> None:
|
|||||||
def _render_migration_gateway(con: duckdb.DuckDBPyConnection) -> None:
|
def _render_migration_gateway(con: duckdb.DuckDBPyConnection) -> None:
|
||||||
st.subheader("Migration: the gateway domain")
|
st.subheader("Migration: the gateway domain")
|
||||||
st.markdown(
|
st.markdown(
|
||||||
"Migration is where the Overton shift is most genuine, and where "
|
"Migration showed the largest shift in centrist support. "
|
||||||
"right-wing parties learned the frames they later applied to other domains."
|
"Framing patterns first used here later appeared in other policy domains."
|
||||||
)
|
)
|
||||||
|
|
||||||
df = con.execute("""
|
df = con.execute("""
|
||||||
@@ -197,7 +197,7 @@ def _render_motion_browser(con: duckdb.DuckDBPyConnection) -> None:
|
|||||||
df = df.rename(columns={
|
df = df.rename(columns={
|
||||||
"year": "Year",
|
"year": "Year",
|
||||||
"title": "Title",
|
"title": "Title",
|
||||||
"text": "Motion text",
|
"body_text": "Motion text",
|
||||||
"centrist_support_strict": "Centrist Support",
|
"centrist_support_strict": "Centrist Support",
|
||||||
"category": "Category",
|
"category": "Category",
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -667,10 +667,9 @@ def build_trajectories_tab(db_path: str, window_size: str) -> None:
|
|||||||
try:
|
try:
|
||||||
st.plotly_chart(fig, use_container_width=True)
|
st.plotly_chart(fig, use_container_width=True)
|
||||||
st.info(
|
st.info(
|
||||||
"**Overton window widened:** after PVV's election victory (Nov 2023), "
|
"After 2024, centrist support for right-wing motions rose from 25% to 51%, "
|
||||||
"centrist support for right-wing motions rose from 25% to 51%, "
|
|
||||||
"while support for left-wing motions stayed flat. "
|
"while support for left-wing motions stayed flat. "
|
||||||
"Right-wing parties moderated their motions; centrists voted along more often."
|
"Right-wing parties filed milder motions; centrists voted along more often."
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
st.error(f"Trajectories rendering failed: {e}")
|
st.error(f"Trajectories rendering failed: {e}")
|
||||||
|
|||||||
Reference in New Issue
Block a user