Ideograph is a visual tool for exploring ideologies of political parties. It queries its data directly from the frequently updated WikiData graph database. You can filter the graph by country, and find further information by clicking on the node labels.

Ideograph is licensed under GNU GPL 3.0.


Where does the data come from?

WikiData is an RDF triple store holding a growing number of objects and relations. One of them is the relation P1142 : “political ideology”. You can obtain a list of political parties, their ideologies, and their countries with the following SPARQL query to the WikiData endpoint:

SELECT DISTINCT ?item ?itemLabel ?country ?countryLabel ?linkTo ?linkToLabel
    ?item wdt:P1142 ?linkTo .
    ?linkTo wdt:P31 wd:Q12909644 . # take "political ideology" only
    VALUES ?type { wd:Q7278  wd:Q24649 } # filter by these types of political actors
    ?item wdt:P31 ?type .
    ?item wdt:P17 ?country .
    MINUS { ?item wdt:P576 ?abolitionDate } # exclude abolished parties
    SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . }

Try it out !

The data is certainly neither exhaustive nor unbiased: it only holds ideologies and parties recorded by Wikidatians, who themselves might disagree even on the definition of “ideology” or “political party”. You will also encounter blatant errors in the data. If you do so, feel free to edit it! WikiData statements can be amended by anyone. See the docs to understand how.

How is the graph visualization designed?

Ideograph visualizes the data as a graph. Nodes (circles) represent political parties and ideologies. The links (lines) represent their relations: each party is linked to its ideologies. The graph is force-directed and spring-embedded, meaning that nodes repel each other but the elastic links draw them together. This results in a spatial grouping of political parties sharing similar ideologies, and in the grouping of ideologies shared by multiple parties. Peripheral ideologies are more extreme or polarizing; ideologies positioned in the center are either consensual or shared by many parties also associated to other, diverging ideologies.

Ideograph uses the D3js framework for data treatment and as underlying force-directed algorithm. However, I do not use D3’s standard SVG rendering, as the graph’s thousands of nodes and relations would overload the SVG DOM manageable by most navigators. Instead, I generate PIXI.Graphics objects for incomparably more efficient WebGL rendering, inspired by this example. To see how I’ve done it, have a look at the source code at GitHub.

How do I use the app?

Slide the mouse pointer over nodes: the node’s name with a link to more information will appear:

Click on a node: highlight its relations. (to remove the highlight, click again on the highlighted node):


Select a country: add the parties from this country to the graph. For convenience, you can Unselect All countries before you start to go through the list. Once you are done selecting, click on the button “Update Graph” (this generates a new request and might take some time) :

The “Freeze Graph” button pauses the graph’s force-directed algoritm. You can resume its movement by clicking on any node.

Some observations

Euroscepticism is the ideological heart of Europe

Euroscepticism belongs to the most central nodes of the graph consisting of 2337 European political parties and their 304 ideologies (at time of writing). This means that euroscepticism is the central common point between the polarized positions of socialism, nationalism liberalism and anarchism.

United in environmentalism against fascism

Environmentalism, close to social democracy, is the common ground for parties of socialist and liberal inspiration. It lies opposite to nationalism and fascism.


Nationalism has a considerable left-wing component

Nationalism subdivides into specific postures all across the political specter, reaching as far out to the left as the Unity for Human Rights Party of Albania.


Your observations

You are welcome to add your observations to the comments section of this post.

For app development suggestions, please use the GitHub “issues” interface.

  • 1

Leave a comment

Your email address will not be published. Required fields are marked *