radical and extreme
Remember: topic to me at least by Week 4
Date | Presenters | Method |
---|---|---|
15 May: | Idil M., Zeynep P., Liesl W., Selin K., Chiara W. | logistic regression |
22 May: | Gabriel W., Lina M., Florian S., Julian B. | discourse analysis |
29 May: | NO CLASS MEETING |
Date | Presenters | Method |
---|---|---|
5 June: | Rasmus B., Andre D., Josefine E., Ioanna L., Santiago C. | regression |
12 June: | Omar B., Lela E., Niclas W. | TBD |
19 June: | NO CLASS MEETING | |
26 June: | Colombe I., Konstantin S., Jakob W. | TBD |
26 June: | Maksim K., Felix S., Jon L.D., Damir S., Korbinian M. | case study |
Date | Presenters | Method |
---|---|---|
3 July: | Alexander V., Samuel B., Luis G., Oscar O. | TBD |
10 July: | Lina S., Stephen W., Philomena B., Aarón Z. | TBD |
17 July: | Corinna Z., Eva M., and Rostislav N. | TBD |
24 July: | Sebastian K., Thomas R., Emilia Z., Florian P. | TBD |
24 July: | Lorenz F., Daniel B., Fiona W., Medina H. | TBD |
→
→
→
temporal, contextual comparisons; consequences for policy positions and other party behaviour (e.g., cooperation with other parties); map party system landscapes
populist | non-populist | |
---|---|---|
radical | ||
non-radical |
Mudde’s list … a bit outdated. What is the scene like today?
FPÖ (AT); Vlaams Belang (BE); Hrvatska stranka prava (HR); Dansk Folkeparti (DK); Front National (FR); Die Republikaner (DE); MIEP (HU); Liga Polskich Rodzin (PL); Partidul Romania Mare (RO); LDPR (Zhironovsky) (RU); Slovenska narodna strana (SI)
Norwegian Fremskrittspartiet (NO); Bulgarian Business Bloc (BG); Danish Fremskridtspartiet (DK); Lijst Pim Fortuyn (NL); Forza Italia (IT); Polish Unia Polityki Realnej (PL); Swedish Ny Demokrati (SE); Schweizer Autopartei (CH)
NPD (DE); National Political Union (GR); BNP (UK); Dutch Centrumpartij ’86 (NL); Prava Alternativa (CZ); Narodowe Odrodzenie Polski (PL); Movement for Romania (RO); Russian National Unity (RU); National Bolshevik Party (RU); non-extreme: Nationalist Action Party (TR)
Civic Democratic Party (CZ); Fidesz (HU) …
Take the survey at https://forms.gle/MPe6HyUSdEdkMpk6A
import { liveGoogleSheet } from "@jimjamslam/live-google-sheet";
import { aq, op } from "@uwdata/arquero";
// UPDATE THE LINK FOR A NEW POLL
surveyResults = liveGoogleSheet(
"https://docs.google.com/spreadsheets/d/e/" +
"2PACX-1vTPm05azJcLoJJ-VRuMZfmZrOjwbPMFL3AeaFWJw-YOKsuspBB9H_QS8mYunO5NB8XNlcoys_INGvXQ/" +
"pub?gid=1226040417&single=true&output=csv",
10000, 1, 13); // adjust the last number to select all relevant columns
respondentCount = surveyResults.length;
function PieChart(data, {
name = ([x]) => x, // given d in data, returns the (ordinal) label
value = ([, y]) => y, // given d in data, returns the (quantitative) value
title, // given d in data, returns the title text
width = 640, // outer width, in pixels
height = 400, // outer height, in pixels
innerRadius = 0, // inner radius of pie, in pixels (non-zero for donut)
outerRadius = Math.min(width, height) / 2, // outer radius of pie, in pixels
labelRadius = (innerRadius * 0.5 + outerRadius * 0.5), // center radius of labels
format = ",", // a format specifier for values (in the label)
names, // array of names (the domain of the color scale)
colors, // array of colors for names
stroke = innerRadius > 0 ? "none" : "white", // stroke separating widths
strokeWidth = 1, // width of stroke separating wedges
strokeLinejoin = "round", // line join of stroke separating wedges
padAngle = stroke === "none" ? 1 / outerRadius : 0, // angular separation between wedges, in radians
} = {}) {
// Compute values.
const N = d3.map(data, name);
const V = d3.map(data, value);
const I = d3.range(N.length).filter(i => !isNaN(V[i]));
// Unique the names.
if (names === undefined) names = N;
names = new d3.InternSet(names);
// Chose a default color scheme based on cardinality.
if (colors === undefined) colors = d3.schemeSpectral[names.size];
if (colors === undefined) colors = d3.quantize(t => d3.interpolateSpectral(t * 0.8 + 0.1), names.size);
// Construct scales.
const color = d3.scaleOrdinal(names, colors);
// Compute titles.
if (title === undefined) {
const formatValue = d3.format(format);
title = i => `${N[i]}\n${formatValue(V[i])}`;
} else {
const O = d3.map(data, d => d);
const T = title;
title = i => T(O[i], i, data);
}
// Construct arcs.
const arcs = d3.pie().padAngle(padAngle).sort(null).value(i => V[i])(I);
const arc = d3.arc().innerRadius(innerRadius).outerRadius(outerRadius);
const arcLabel = d3.arc().innerRadius(labelRadius).outerRadius(labelRadius);
const svg = d3.create("svg")
.attr("width", width)
.attr("height", height)
.attr("viewBox", [-width / 2, -height / 2, width, height])
.attr("style", "max-width: 100%; height: auto; height: intrinsic;");
svg.append("g")
.attr("stroke", stroke)
.attr("stroke-width", strokeWidth)
.attr("stroke-linejoin", strokeLinejoin)
.selectAll("path")
.data(arcs)
.join("path")
.attr("fill", d => color(N[d.data]))
.attr("d", arc)
.append("title")
.text(d => title(d.data));
svg.append("g")
.attr("font-family", "sans-serif")
.attr("font-size", 100)
.attr("text-anchor", "middle")
.selectAll("text")
.data(arcs)
.join("text")
.attr("transform", d => `translate(${arcLabel.centroid(d)})`)
.selectAll("tspan")
.data(d => {
const lines = `${title(d.data)}`.split(/\n/);
return (d.endAngle - d.startAngle) > 0.25 ? lines : lines.slice(0, 1);
})
.join("tspan")
.attr("x", 0)
.attr("y", (_, i) => `${i * 1.1}em`)
.attr("font-weight", (_, i) => i ? null : "bold")
.text(d => d);
return Object.assign(svg.node(), {scales: {color}});
}
BJP - nativist?
bjp_nativCounts = aq.from(surveyResults)
.select("bjp_nativ")
.derive({ bjp_nativ: d => (d.bjp_nativ && d.bjp_nativ.trim() !== "" ? d.bjp_nativ : "NA") })
.groupby("bjp_nativ")
.count()
.rename({ count: 'value', bjp_nativ: 'name' }) // Rename for D3 pie chart
.objects() // convert to array for D3
bjp_nativChart = PieChart(bjp_nativCounts, {
name: d => d.name,
value: d => d.value,
names: ["Yes", "No", "Maybe", "NA"], // ordering
colors: ["#4CAF50", "#F44336", "grey", "#CCCCCC"], // green 'yes', red 'no'
width,
height: 900
})
BJP - authoritarian?
bjp_authCounts = aq.from(surveyResults)
.select("bjp_auth")
.derive({ bjp_auth: d => (d.bjp_auth && d.bjp_auth.trim() !== "" ? d.bjp_auth : "NA") })
.groupby("bjp_auth")
.count()
.rename({ count: 'value', bjp_auth: 'name' }) // Rename for D3 pie chart
.objects() // convert to array for D3
bjp_authChart = PieChart(bjp_authCounts, {
name: d => d.name,
value: d => d.value,
names: ["Yes", "No", "Maybe", "NA"], // ordering
colors: ["#4CAF50", "#F44336", "grey", "#CCCCCC"], // green 'yes', red 'no'
width,
height: 900
})
BJP - populist?
bjp_popuCounts = aq.from(surveyResults)
.select("bjp_popu")
.derive({ bjp_popu: d => (d.bjp_popu && d.bjp_popu.trim() !== "" ? d.bjp_popu : "NA") })
.groupby("bjp_popu")
.count()
.rename({ count: 'value', bjp_popu: 'name' }) // Rename for D3 pie chart
.objects() // convert to array for D3
bjp_popuChart = PieChart(bjp_popuCounts, {
name: d => d.name,
value: d => d.value,
names: ["Yes", "No", "Maybe", "NA"], // ordering
colors: ["#4CAF50", "#F44336", "grey", "#CCCCCC"], // green 'yes', red 'no'
width,
height: 900
})
Republican (US) - nativist?
rep_nativCounts = aq.from(surveyResults)
.select("rep_nativ")
.derive({ rep_nativ: d => (d.rep_nativ && d.rep_nativ.trim() !== "" ? d.rep_nativ : "NA") })
.groupby("rep_nativ")
.count()
.rename({ count: 'value', rep_nativ: 'name' }) // Rename for D3 pie chart
.objects() // convert to array for D3
rep_nativChart = PieChart(rep_nativCounts, {
name: d => d.name,
value: d => d.value,
names: ["Yes", "No", "Maybe", "NA"], // ordering
colors: ["#4CAF50", "#F44336", "grey", "#CCCCCC"], // green 'yes', red 'no'
width,
height: 900
})
Republican (US) - authoritarian?
rep_authCounts = aq.from(surveyResults)
.select("rep_auth")
.derive({ rep_auth: d => (d.rep_auth && d.rep_auth.trim() !== "" ? d.rep_auth : "NA") })
.groupby("rep_auth")
.count()
.rename({ count: 'value', rep_auth: 'name' }) // Rename for D3 pie chart
.objects() // convert to array for D3
rep_authChart = PieChart(rep_authCounts, {
name: d => d.name,
value: d => d.value,
names: ["Yes", "No", "Maybe", "NA"], // ordering
colors: ["#4CAF50", "#F44336", "grey", "#CCCCCC"], // green 'yes', red 'no'
width,
height: 900
})
Republican (US) - populist?
rep_popuCounts = aq.from(surveyResults)
.select("rep_popu")
.derive({ rep_popu: d => (d.rep_popu && d.rep_popu.trim() !== "" ? d.rep_popu : "NA") })
.groupby("rep_popu")
.count()
.rename({ count: 'value', rep_popu: 'name' }) // Rename for D3 pie chart
.objects() // convert to array for D3
rep_popuChart = PieChart(rep_popuCounts, {
name: d => d.name,
value: d => d.value,
names: ["Yes", "No", "Maybe", "NA"], // ordering
colors: ["#4CAF50", "#F44336", "grey", "#CCCCCC"], // green 'yes', red 'no'
width,
height: 900
})
AfD - nativist?
afd_nativCounts = aq.from(surveyResults)
.select("afd_nativ")
.derive({ afd_nativ: d => (d.afd_nativ && d.afd_nativ.trim() !== "" ? d.afd_nativ : "NA") })
.groupby("afd_nativ")
.count()
.rename({ count: 'value', afd_nativ: 'name' }) // Rename for D3 pie chart
.objects() // convert to array for D3
afd_nativChart = PieChart(afd_nativCounts, {
name: d => d.name,
value: d => d.value,
names: ["Yes", "No", "Maybe", "NA"], // ordering
colors: ["#4CAF50", "#F44336", "grey", "#CCCCCC"], // green 'yes', red 'no'
width,
height: 900
})
AfD - authoritarian?
afd_authCounts = aq.from(surveyResults)
.select("afd_auth")
.derive({ afd_auth: d => (d.afd_auth && d.afd_auth.trim() !== "" ? d.afd_auth : "NA") })
.groupby("afd_auth")
.count()
.rename({ count: 'value', afd_auth: 'name' }) // Rename for D3 pie chart
.objects() // convert to array for D3
afd_authChart = PieChart(afd_authCounts, {
name: d => d.name,
value: d => d.value,
names: ["Yes", "No", "Maybe", "NA"], // ordering
colors: ["#4CAF50", "#F44336", "grey", "#CCCCCC"], // green 'yes', red 'no'
width,
height: 900
})
AfD - populist?
afd_popuCounts = aq.from(surveyResults)
.select("afd_popu")
.derive({ afd_popu: d => (d.afd_popu && d.afd_popu.trim() !== "" ? d.afd_popu : "NA") })
.groupby("afd_popu")
.count()
.rename({ count: 'value', afd_popu: 'name' }) // Rename for D3 pie chart
.objects() // convert to array for D3
afd_popuChart = PieChart(afd_popuCounts, {
name: d => d.name,
value: d => d.value,
names: ["Yes", "No", "Maybe", "NA"], // ordering
colors: ["#4CAF50", "#F44336", "grey", "#CCCCCC"], // green 'yes', red 'no'
width,
height: 900
})
BJP
bjp_radextCounts = aq.from(surveyResults)
.select("bjp_radext")
.groupby("bjp_radext")
.count()
.derive({ measure: d => "" })
// Calculate the maximum count from your dataset
bjp_maxCountRE = Math.max(...bjp_radextCounts.objects().map(d => d.count));
plot_bjp_radext = Plot.plot({
marks: [
Plot.barY(bjp_radextCounts, {
x: "bjp_radext",
y: "count",
fill: "bjp_radext",
stroke: "black",
strokeWidth: 1
}),
Plot.ruleY([respondentCount], { stroke: "#ffffff99" })
],
color: {
domain: [
"Radical",
"Extreme",
"Neither"
],
range: [
"#d73027", // red
"#4B0082", // indigo
"cadetblue" // violet
]
},
marginBottom: 80,
x: { label: "", tickSize: 2, tickRotate: -45,
domain: ["Radical", "Extreme", "Neither"]
},
y: {
label: "",
tickSize: 10,
tickFormat: d => d,
tickValues: Array.from(
new Set(bjp_radextCounts.objects().map(d => d.count))
).sort((a, b) => a - b),
domain: [0, bjp_maxCountRE]
},
facet: { data: bjp_radextCounts, x: "measure", label: "" },
marginLeft: 140,
style: {
width: 1350,
height: 500,
fontSize: 30,
}
});
Republicans
rep_radextCounts = aq.from(surveyResults)
.select("rep_radext")
.groupby("rep_radext")
.count()
.derive({ measure: d => "" })
// Calculate the maximum count from your dataset
rep_maxCountRE = Math.max(...rep_radextCounts.objects().map(d => d.count));
plot_rep_radext = Plot.plot({
marks: [
Plot.barY(rep_radextCounts, {
x: "rep_radext",
y: "count",
fill: "rep_radext",
stroke: "black",
strokeWidth: 1
}),
Plot.ruleY([respondentCount], { stroke: "#ffffff99" })
],
color: {
domain: [
"Radical",
"Extreme",
"Neither"
],
range: [
"#d73027", // red
"#4B0082", // indigo
"cadetblue" // violet
]
},
marginBottom: 80,
x: { label: "", tickSize: 2, tickRotate: -45,
domain: ["Radical", "Extreme", "Neither"]
},
y: {
label: "",
tickSize: 10,
tickFormat: d => d,
tickValues: Array.from(
new Set(rep_radextCounts.objects().map(d => d.count))
).sort((a, b) => a - b),
domain: [0, rep_maxCountRE]
},
facet: { data: rep_radextCounts, x: "measure", label: "" },
marginLeft: 140,
style: {
width: 1350,
height: 500,
fontSize: 30,
}
});
AfD
afd_radextCounts = aq.from(surveyResults)
.select("afd_radext")
.groupby("afd_radext")
.count()
.derive({ measure: d => "" })
// Calculate the maximum count from your dataset
afd_maxCountRE = Math.max(...afd_radextCounts.objects().map(d => d.count));
plot_afd_radext = Plot.plot({
marks: [
Plot.barY(afd_radextCounts, {
x: "afd_radext",
y: "count",
fill: "afd_radext",
stroke: "black",
strokeWidth: 1
}),
Plot.ruleY([respondentCount], { stroke: "#ffffff99" })
],
color: {
domain: [
"Radical",
"Extreme",
"Neither"
],
range: [
"#d73027", // red
"#4B0082", // indigo
"cadetblue" // violet
]
},
marginBottom: 80,
x: { label: "", tickSize: 2, tickRotate: -45,
domain: ["Radical", "Extreme", "Neither"]
},
y: {
label: "",
tickSize: 10,
tickFormat: d => d,
tickValues: Array.from(
new Set(afd_radextCounts.objects().map(d => d.count))
).sort((a, b) => a - b),
domain: [0, afd_maxCountRE]
},
facet: { data: afd_radextCounts, x: "measure", label: "" },
marginLeft: 140,
style: {
width: 1350,
height: 500,
fontSize: 30,
}
});
pro
contra
pro
contra
pro
contra
pro
contra
pro
contra
pro
contra
pro
contra
pro
contra
pro
contra
Does Mudde’s classification approach enable differentiation between far-right parties or merely classification whether a party belongs to the far-right party family?
advert adapted by NPD, Lega Nord, VB, Democracia Nacional—among others
advert adapted by NPD, Lega Nord, VB, Democracia Nacional—among others
https://github.com/hdigital/parlgov-snippets/tree/main/party-family-share
https://github.com/hdigital/parlgov-snippets/tree/main/party-family-share
https://github.com/hdigital/parlgov-snippets/blob/main/country-year/cabinet-share.png
extremist/autocratic-fascist (usually including racism or xenophobia): NPD/DVU (DE), BNP (UK), Jobbik (HU)
Ethnocentrist (but not fascist): FPÖ (AT), VB (BE), REP (DE), FN (FR), MIEP (HU), Lega (IT), SVP (CH)
populist/populist-authoritarian (strong and charismatic leader and with a diffuse nationalist ideology): BZÖ (AT), FIDESZ (HU), PiS (PL)
religious-fundamentalist: KDNP (HU), LPR (PL)
How is Minkenberg evaluating party and movement strength? Is there a causal relationship? (if so, in what direction?)
low party strength | high party strength | |
---|---|---|
low movement strength | Austria, France, Italy | |
medium movement strength | Germany (West), Netherlands | Denmark, Norway, Switzerland, Belgium |
high movement strength | Germany (East), United Kingdom, Sweden |
Koopmans and Rucht (1995) have an (outdated?) answer:
mobilization of left-wing movements is concentrated during periods of right-wing government, whereas the Right tends to mobilize most strongly when the Left is in power. However, the highest levels of mobilization, of the Left and to some extent also of the Right, occur when mixed governments, in which power is shared by parties of the Left and of the Right, are in power.
Minkenberg (2013): the efforts by a number of radical right parties to appear ‘respectable’ has changed their pariah status—although as will be shown, they have not become a conservative or moderate right-wing party
left | centre | right | |||
---|---|---|---|---|---|
1990 | MSZP | FIDESZ | SZDSZ, **MDF** | FKGP, KDNP | |
1994 | **MSZP**, FIDESZ | SZDSZ, MDF | KDNP, FKGP | (MIEP) | |
1998 | MSZP | SZDSZ, **FIDESZ**, MDF | FKGP | MIEP | |
2002 | **MSZP** | SZDSZ, FIDESZ-MDF | |||
2006 | **MSZP** | SZDSZ, MDF | FIDESZ | ||
2010 | LMP | MSZP | **FIDESZ** | Jobbik | |
2014 | LMP | MSZP (+ coalition) | **FIDESZ** | Jobbik | |
2018 | LMP | MSZP-Parbeszed, + | **FIDESZ** | Jobbik | |
2022 | United (incl. Jobbik) | **FIDESZ** | Mi Hazánk |
Minkenberg (2013, 19):
In the language of Giovanni Sartori: the radical right’s ‘blackmail potential’ may be more consequential than its ‘coalition potential’
coalition potential
ability to influence electoral competition by (potential) inclusion in a viable government
blackmail potential
represents another pole of political support and counters traditional centripetal party competition between the centrist parties
What are the barriers to far-right parties in government? Are they unique?
Is there anything distinctive about the effects of far-right parties in government (policy, political competition, internationally)?
What do you know about cases of far right in government (e.g., FPÖ/BZÖ, Lega [Nord], Dansk Folkepartiet, FdI)?
What has happened since Minkenberg’s article in 2013? Are we in a ‘new world’?
Anonymous feedback here: https://forms.gle/pisUmtmWdE13zMD58
Alternatively, send me an email: m.zeller@lmu.de