Welche Parteien stehen sich nahe?

Die Bundeszentrale für politische Bildung hat allen 38 politischen Parteien 38 Thesen vorgelegt und darum gebeten, diese mit "stimme zu", "stimme nicht zu" oder "neutral" zu beantworten.

Auf der Internetseite
https://www.bpb.de/politik/wahlen/wahl-o-mat/bundestagswahl-2021/337541/download
kann unter dem Link "download des Dateisatzes" eine ZIP-Datei heruntergeladen werden, die eine .XLSX-Datei enthält, welche wiederum eine Tabelle mit den Antworten enthält. Praktischerweise habe ich mit Libre-Office die XLSX- in eine CSV-Datei exportiert.

Vermutlich sollen die Parteien damit die Möglichkeit bekommen, herauszufinden, mit welchen anderen Parteien sie eine hohe Übereinstimmung haben. Ich habe das hier mal programmiert:

Übereinstimmungen zwischen zwei Parteien

Übereinstimmungen zwischen drei Parteien

Antworten der Parteien

In dem folgenden Recapis-Programm wird die Tabelle mit der Übereinstimmung zwischen zwei Parteien berechnet. Die verschachtelten Schleifen im ersten Block produzieren die für die Tabelle benötigten Zahlen.
Der Epilog dient lediglich der Darstellung in HTML-Kode.



a   Svector 6;     // Antwort
erg Ivector (6*6); // Ergebnis
v split '\t';      // Eingabezeile splitten
p = int v[0]-1;    // Nummer der Partei
if (p >=0 && p < 6) {
  for(z=0;z<6;z++)
    if (p==z) a[z] = v[6];
  if (p==5)
    for(i=0;i<6;i++)
      for(j=0;j<6;j++)
        if (a[i]==a[j])
          erg[6*i+j]++;
}

epilog {
  s Svector ('CDU'  ,'SPD','AFD' ,'FDP'   ,'LINKE','GRÜNE');
  $$='-----------------------------------------------------\n';
  for(i=0;i<6;i++)$$='\t',s[i];$$='\n';
  $$='-----------------------------------------------------\n';
  for(i=0;i<6;i++) {
    $$=s[i],'\t';
    for(j=0;j<6;j++)
      if (             int(100*erg[6*i+j]/38.)==100) $$='\t';
      else $$='%.1f'printf(100*erg[6*i+j]/38.),         '\t';
    $$='\n';
  }

  f Svector ('black','#F30','blue','yellow','#C30','green');
  fak=0.5;
  $='
<table border="1">
<tr>
 <th>   </th>
 <th>CDU</th>
 <th>SPD</th>
 <th>AFD</th>
 <th>FDP</th>
 <th>LINKE</th>
 <th>GRÜNE</th>
</tr>\n
';
  for(i=0;i<6;i++) {
$='<tr>\n';
$='<td>',s[i],'</td>\n';
    for(j=0;j<6;j++) {
      if (int(100*erg[6*i+j]/38.)==100) D=0;
      else D="%.1f" printf(100*erg[6*i+j]/38.*fak);
      $=
  '<td><svg width="100" height="100">'
,'<text x="5", y="15" font-size="12">',D,'%</text>'
,'<circle cx="50" cy="50" r=\Q'
//,"%.1f" printf(100*erg[6*i+j]/38.*fak)
,D
,'\Q fill=\Q'
,f[i]  
,'\Q /></svg></td>\n'
;
    }
$='<tr>\n\n';
  }
$='</table>';
}