Main parties: Exploring how municipalities voted
The party variable has been categorized into their main party. There
18 main parties in total.
How distributed are the percentages of the municipality votes for
every main party?
Municipalities has percentages to how much of the voters voted for a
specific party. These percentage scores were then visualized through
distribution for every main party. Percentages between years 2015 and
2019 for every party was also visualized
ERC, JxC, CIU and Convergencia Democratica were the most popular
parties. Their median values are relatively higher compared to the other
parties.

There could be some missing data for some parties which it is hard
yet define whether there has been shifts or not.
Shift from one party to another
Comparison between 2015 and 2019 proportion of votes across
different parties
Here’ the scatterplot among the different parties and how the
percentages of municipality voted. The x-axis represents the voted
proportion for 2015 while the y-axis represents the voted proportion for
2019.
Shifts of municipalities between parties
From the previous dataset, we determine whether there has been a flip
on shift in a winning party between 2015 and 2019.
If there is a change between those 2 years, we indicate ‘no win’
(2015) to ‘win’ (2019) as a gained while a ‘win’ (2015) to ‘no win’
(2019) as lost. For no change such as ‘win’ to ‘win’ or ‘no win’ to ‘no
win’, we indicate it as no change.

Parties in the others groups seemed to have gained many municipal
votes. - In contrary, the ERC has lost more than it gained as compared
to last year
More Advanced Exploration: Clustering municipalities
On this part of the exploration, we try to cluster the municipalities
and uing the main parties as the variables to see patterns with.
Identifying the parties with the most number of votes by computing
the mean number of votes in the past two election. We will use this to
highlight the most popular parties.
We then just select the numerical variables, removing the
municipality names in the process.
Applying K-means clustering
k1 <- kmeans(parties_clust_nums, 5)
k2 <- kmeans(parties_clust_nums, 5)
table(k1$cluster, k2$cluster)
plot(k1$centers[,3], k1$centers[,2])
k3 <- kmeans(parties_clust_nums, 6)
plot(k3$centers[,3], k3$centers[,2])
Heirarchical clustering

From the plot above, seems like we can group the municipalities into
3 clusters. If we go further down, it could also be cut further into
7.
table(c1, c2)
c2
c1 1 2 3 4 5 6 7
1 227 0 0 0 0 78 0
2 0 183 0 107 0 0 85
3 0 0 179 0 83 0 0
Let’s aggregate the values of every variable for every group based on
how we cut it in the tree
cdg1 <- aggregate(as.data.frame(parties_clust_nums), list(c1), mean)
cdg2 <- aggregate(as.data.frame(parties_clust_nums), list(c2), mean)
cdg1
cdg2
Pairwise visualization between main parties
Using 3 classes

Using 7 classes

The clustering method above needs to be profiled to see the
characteristics of the classes in a more detailed level.
Voter turnout
Data source for voter turnout have summarized the votes per county:
https://www.idescat.cat/indicadors/?id=aec&n=15893&tema=elecc&t=201900
Voter turnout seem to have shifted with a median of 61% voter turnout
in 2015 to 68.8% in 2019. Voter turnout has been higher in 2019 compared
to the previous year of 2015 by 7.8%.

Priorat and Terra Alta had an incredibly high voter turnout compared
to the rest in 2015 at 75% and 78.7%.
Here is a more detailed view of the distribution of counties on voter
turnover percentages.

LS0tCnRpdGxlOiAiQ2F0YWx1bnlhIE11bmljaXBhbGl0eSBFbGVjdGlvbiAyMDE1LTIwMTkgRXhwbG9yYXRpb24iCm91dHB1dDogaHRtbF9ub3RlYm9vawplZGl0b3Jfb3B0aW9uczogCiAgbWFya2Rvd246IAogICAgd3JhcDogNzIKLS0tCgpUaGUgbWFpbiBkYXRhc2V0IGRvd25sb2FkZWQgZnJvbSBpZGVzY2F0LmNhdDoKPGh0dHBzOi8vd3d3LmlkZXNjYXQuY2F0L2luZGljYWRvcnMvP2lkPWFlYyZuPTE1ODkzJmxhbmc9ZW4mdD0yMDE1MDA+CgpUaGUgcGFydGllcyBpbiB0aGUgZGF0YXNldCBhYm92ZSB3ZXJlIGdyb3VwZWQgdG9nZXRoZXIgaW50byBhIG1haW4gcGFydHkKdGhyb3VnaCB0aGlzIE9ic2VydmFibGUgbm90ZWJvb2s6IFtNVlRFQyBXb3Jrc2hvcCAxIC0gRWxlY3Rpb24gQW5hbHlzaXM6CkRhdGEgRXhwbG9yYXRpb24gLyBKb3NlcGggUmljYWZvcnQgXHwgT2JzZXJ2YWJsZQoob2JzZXJ2YWJsZWhxLmNvbSldKGh0dHBzOi8vb2JzZXJ2YWJsZWhxLmNvbS9kLzdlYjAxZjAwMGMyOGFkMmUpCgojIyBNYWluIHBhcnRpZXM6IEV4cGxvcmluZyBob3cgbXVuaWNpcGFsaXRpZXMgdm90ZWQKClRoZSBwYXJ0eSB2YXJpYWJsZSBoYXMgYmVlbiBjYXRlZ29yaXplZCBpbnRvIHRoZWlyIG1haW4gcGFydHkuIFRoZXJlIDE4Cm1haW4gcGFydGllcyBpbiB0b3RhbC4KCiMjIyMgRGF0YXNldCBwcmV2aWV3CgpgYGB7cn0KcGFydGllc19jbGVhbgpgYGAKCiMjIyBIb3cgZGlzdHJpYnV0ZWQgYXJlIHRoZSBwZXJjZW50YWdlcyBvZiB0aGUgbXVuaWNpcGFsaXR5IHZvdGVzIGZvciBldmVyeSBtYWluIHBhcnR5PwoKTXVuaWNpcGFsaXRpZXMgaGFzIHBlcmNlbnRhZ2VzIHRvIGhvdyBtdWNoIG9mIHRoZSB2b3RlcnMgdm90ZWQgZm9yIGEKc3BlY2lmaWMgcGFydHkuIFRoZXNlIHBlcmNlbnRhZ2Ugc2NvcmVzIHdlcmUgdGhlbiB2aXN1YWxpemVkIHRocm91Z2gKZGlzdHJpYnV0aW9uIGZvciBldmVyeSBtYWluIHBhcnR5LiBQZXJjZW50YWdlcyBiZXR3ZWVuIHllYXJzIDIwMTUgYW5kCjIwMTkgZm9yIGV2ZXJ5IHBhcnR5IHdhcyBhbHNvIHZpc3VhbGl6ZWQKCkVSQywgSnhDLCBDSVUgYW5kIENvbnZlcmdlbmNpYSBEZW1vY3JhdGljYSB3ZXJlIHRoZSBtb3N0IHBvcHVsYXIKcGFydGllcy4gVGhlaXIgbWVkaWFuIHZhbHVlcyBhcmUgcmVsYXRpdmVseSBoaWdoZXIgY29tcGFyZWQgdG8gdGhlIG90aGVyCnBhcnRpZXMuCgpgYGB7cn0KZ2dwbG90KHBhcnRpZXNfY2xlYW4pICsKICBnZW9tX2JveHBsb3QoYWVzKHggPSB2b3RlZF9wcm9wb3J0aW9uLCB5ID0gYXMuZmFjdG9yKHllYXIpKSwgYWxwaGEgPSAwLjE1LCBzaXplID0gMC4xNSkgKwogICMgZ2VvbV92bGluZShhZXMoeGludGVyY2VwdCA9IG1lZGlhbih2b3RlcykpLCBjb2xvciA9ICJibHVlIikgKyAjIE1lZGlhbiB2YWx1ZSBmb3IgYm90aCB5ZWFycwogIGZhY2V0X3dyYXAodmFycyhtYWluX3BhcnR5KSkgKwogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBzY2FsZXM6OnByZXR0eV9icmVha3MobiA9IDIpKQpgYGAKClRoZXJlIGNvdWxkIGJlIHNvbWUgbWlzc2luZyBkYXRhIGZvciBzb21lIHBhcnRpZXMgd2hpY2ggaXQgaXMgaGFyZCB5ZXQKZGVmaW5lIHdoZXRoZXIgdGhlcmUgaGFzIGJlZW4gc2hpZnRzIG9yIG5vdC4KCiMjIyBTaGlmdCBmcm9tIG9uZSBwYXJ0eSB0byBhbm90aGVyCgojIyMjIENvbXBhcmlzb24gYmV0d2VlbiAyMDE1IGFuZCAyMDE5IHByb3BvcnRpb24gb2Ygdm90ZXMgYWNyb3NzIGRpZmZlcmVudCBwYXJ0aWVzCgpIZXJlJyB0aGUgc2NhdHRlcnBsb3QgYW1vbmcgdGhlIGRpZmZlcmVudCBwYXJ0aWVzIGFuZCBob3cgdGhlCnBlcmNlbnRhZ2VzIG9mIG11bmljaXBhbGl0eSB2b3RlZC4gVGhlIHgtYXhpcyByZXByZXNlbnRzIHRoZSB2b3RlZApwcm9wb3J0aW9uIGZvciAyMDE1IHdoaWxlIHRoZSB5LWF4aXMgcmVwcmVzZW50cyB0aGUgdm90ZWQgcHJvcG9ydGlvbiBmb3IKMjAxOS4KCmBgYHtyfQpnZ3Bsb3QocGFydGllc19wcm9wX3NoaWZ0KSArCiBnZW9tX3BvaW50KGFlcyh4ID0gdm90ZWRfcHJvcF8yMDE1LCB5ID0gdm90ZWRfcHJvcF8yMDE5LCBjb2xvciA9IG1haW5fcGFydHkpLCBhbHBoYSA9IDAuMzUpICsKIHhsaW0oMCwgMTAwKSArIHlsaW0oMCwgMTAwKSArCiBmYWNldF93cmFwKHZhcnMobWFpbl9wYXJ0eSkpCmBgYAoKIyMjIyBTaGlmdHMgb2YgbXVuaWNpcGFsaXRpZXMgYmV0d2VlbiBwYXJ0aWVzCgpGcm9tIHRoZSBwcmV2aW91cyBkYXRhc2V0LCB3ZSBkZXRlcm1pbmUgd2hldGhlciB0aGVyZSBoYXMgYmVlbiBhIGZsaXAgb24Kc2hpZnQgaW4gYSB3aW5uaW5nIHBhcnR5IGJldHdlZW4gMjAxNSBhbmQgMjAxOS4KCklmIHRoZXJlIGlzIGEgY2hhbmdlIGJldHdlZW4gdGhvc2UgMiB5ZWFycywgd2UgaW5kaWNhdGUgJ25vIHdpbicgKDIwMTUpCnRvICd3aW4nICgyMDE5KSBhcyBhIGdhaW5lZCB3aGlsZSBhICd3aW4nICgyMDE1KSB0byAnbm8gd2luJyAoMjAxOSkgYXMKbG9zdC4gRm9yIG5vIGNoYW5nZSBzdWNoIGFzICd3aW4nIHRvICd3aW4nIG9yICdubyB3aW4nIHRvICdubyB3aW4nLCB3ZQppbmRpY2F0ZSBpdCBhcyBubyBjaGFuZ2UuCgpgYGB7cn0KcGFydGllc19jaGFuZ2UKYGBgCgpgYGB7cn0KY2JQYWxldHRlIDwtIGMoImRhcmtncmVlbiIsICJyZWQiLCAiZ3JleSIpCgpnZ3Bsb3QocGFydGllc19jaGFuZ2UpICsKICBnZW9tX3BvaW50KGFlcyh4ID0gdm90ZWRfcHJvcF8yMDE1LCB5ID0gdm90ZWRfcHJvcF8yMDE5LCBjb2xvciA9IHN0YXR1c18yMDE5KSwgYWxwaGEgPSAwLjM1KSArCiAgZmFjZXRfd3JhcCh2YXJzKG1haW5fcGFydHkpKSArCiAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjYlBhbGV0dGUpICsKICBnZW9tX2FibGluZShpbnRlcmNlcHQgPSAwLCBzbG9wZSA9IDEsIGFscGhhID0gMC4xNSkKYGBgCgpQYXJ0aWVzIGluIHRoZSBvdGhlcnMgZ3JvdXBzIHNlZW1lZCB0byBoYXZlIGdhaW5lZCBtYW55IG11bmljaXBhbAp2b3Rlcy4gLSBJbiBjb250cmFyeSwgdGhlIEVSQyBoYXMgbG9zdCBtb3JlIHRoYW4gaXQgZ2FpbmVkIGFzIGNvbXBhcmVkCnRvIGxhc3QgeWVhcgoKIyMjIE1vcmUgQWR2YW5jZWQgRXhwbG9yYXRpb246IENsdXN0ZXJpbmcgbXVuaWNpcGFsaXRpZXMKCk9uIHRoaXMgcGFydCBvZiB0aGUgZXhwbG9yYXRpb24sIHdlIHRyeSB0byBjbHVzdGVyIHRoZSBtdW5pY2lwYWxpdGllcwphbmQgdWluZyB0aGUgbWFpbiBwYXJ0aWVzIGFzIHRoZSB2YXJpYWJsZXMgdG8gc2VlIHBhdHRlcm5zIHdpdGguCgpgYGB7cn0KcGFydGllc19jbHVzdGVyCmBgYAoKSWRlbnRpZnlpbmcgdGhlIHBhcnRpZXMgd2l0aCB0aGUgbW9zdCBudW1iZXIgb2Ygdm90ZXMgYnkgY29tcHV0aW5nIHRoZQptZWFuIG51bWJlciBvZiB2b3RlcyBpbiB0aGUgcGFzdCB0d28gZWxlY3Rpb24uIFdlIHdpbGwgdXNlIHRoaXMgdG8KaGlnaGxpZ2h0IHRoZSBtb3N0IHBvcHVsYXIgcGFydGllcy4KCldlIHRoZW4ganVzdCBzZWxlY3QgdGhlIG51bWVyaWNhbCB2YXJpYWJsZXMsIHJlbW92aW5nIHRoZSBtdW5pY2lwYWxpdHkKbmFtZXMgaW4gdGhlIHByb2Nlc3MuCgpgYGB7cn0KcGFydGllc19saXN0IDwtIHBhcnRpZXNfY2xlYW4kbWFpbl9wYXJ0eSAlPiUgCiAgdW5pcXVlKCkgJT4lIAogIHNvcnQoKQoKcGFydGllc19jbHVzdF9udW1zIDwtIHBhcnRpZXNfY2x1c3RlciAlPiUKICBzZWxlY3QoLW11bmljaXBhbGl0eSkKcGFydGllc19jbHVzdF9udW1zCmBgYAoKIyMjIEFwcGx5aW5nIEstbWVhbnMgY2x1c3RlcmluZwoKYGBge3J9CmsxIDwtIGttZWFucyhwYXJ0aWVzX2NsdXN0X251bXMsIDUpCmsyIDwtIGttZWFucyhwYXJ0aWVzX2NsdXN0X251bXMsIDUpCgp0YWJsZShrMSRjbHVzdGVyLCBrMiRjbHVzdGVyKQpwbG90KGsxJGNlbnRlcnNbLDNdLCBrMSRjZW50ZXJzWywyXSkKCmszIDwtIGttZWFucyhwYXJ0aWVzX2NsdXN0X251bXMsIDYpCnBsb3QoazMkY2VudGVyc1ssM10sIGszJGNlbnRlcnNbLDJdKQpgYGAKCiMjIyBIZWlyYXJjaGljYWwgY2x1c3RlcmluZwoKYGBge3J9CmQgIDwtIGRpc3QocGFydGllc19jbHVzdF9udW1zKQpoMSA8LSBoY2x1c3QoZCwgbWV0aG9kPSJ3YXJkLkQiKQpwbG90KGgxKQpgYGAKCkZyb20gdGhlIHBsb3QgYWJvdmUsIHNlZW1zIGxpa2Ugd2UgY2FuIGdyb3VwIHRoZSBtdW5pY2lwYWxpdGllcyBpbnRvIDMKY2x1c3RlcnMuIElmIHdlIGdvIGZ1cnRoZXIgZG93biwgaXQgY291bGQgYWxzbyBiZSBjdXQgZnVydGhlciBpbnRvIDcuCgpgYGB7cn0KYzEgPC0gY3V0cmVlKGgxLCAzKQpjMiA8LSBjdXRyZWUoaDEsIDcpCnRhYmxlKGMxLCBjMikKYGBgCgpMZXQncyBhZ2dyZWdhdGUgdGhlIHZhbHVlcyBvZiBldmVyeSB2YXJpYWJsZSBmb3IgZXZlcnkgZ3JvdXAgYmFzZWQgb24KaG93IHdlIGN1dCBpdCBpbiB0aGUgdHJlZQoKYGBge3J9CmNkZzEgPC0gYWdncmVnYXRlKGFzLmRhdGEuZnJhbWUocGFydGllc19jbHVzdF9udW1zKSwgbGlzdChjMSksIG1lYW4pCmNkZzIgPC0gYWdncmVnYXRlKGFzLmRhdGEuZnJhbWUocGFydGllc19jbHVzdF9udW1zKSwgbGlzdChjMiksIG1lYW4pCgpjZGcxCmNkZzIKYGBgCgojIyMgUGFpcndpc2UgdmlzdWFsaXphdGlvbiBiZXR3ZWVuIG1haW4gcGFydGllcwoKIyMjIyBVc2luZyAzIGNsYXNzZXMKCmBgYHtyfQpwYWlycyhwYXJ0aWVzX2NsdXN0X251bXMsIGNvbD1jMSkKYGBgCgojIyMjIFVzaW5nIDcgY2xhc3NlcwoKYGBge3J9CnBhaXJzKHBhcnRpZXNfY2x1c3RfbnVtcywgY29sPWMyKQpgYGAKClRoZSBjbHVzdGVyaW5nIG1ldGhvZCBhYm92ZSBuZWVkcyB0byBiZSBwcm9maWxlZCB0byBzZWUgdGhlCmNoYXJhY3RlcmlzdGljcyBvZiB0aGUgY2xhc3NlcyBpbiBhIG1vcmUgZGV0YWlsZWQgbGV2ZWwuCgojIyBWb3RlciB0dXJub3V0CgpEYXRhIHNvdXJjZSBmb3Igdm90ZXIgdHVybm91dCBoYXZlIHN1bW1hcml6ZWQgdGhlIHZvdGVzIHBlciBjb3VudHk6CjxodHRwczovL3d3dy5pZGVzY2F0LmNhdC9pbmRpY2Fkb3JzLz9pZD1hZWMmbj0xNTg5MyZ0ZW1hPWVsZWNjJnQ9MjAxOTAwPgoKYGBge3J9CmNvdW50aWVzX2NsZWFuCmBgYAoKVm90ZXIgdHVybm91dCBzZWVtIHRvIGhhdmUgc2hpZnRlZCB3aXRoIGEgbWVkaWFuIG9mIDYxJSB2b3RlciB0dXJub3V0IGluCjIwMTUgdG8gNjguOCUgaW4gMjAxOS4gVm90ZXIgdHVybm91dCBoYXMgYmVlbiBoaWdoZXIgaW4gMjAxOSBjb21wYXJlZCB0bwp0aGUgcHJldmlvdXMgeWVhciBvZiAyMDE1IGJ5IDcuOCUuCgpgYGB7cn0KbWVkX3Z0IDwtIGNvdW50aWVzX2NsZWFuICU+JQogIGdyb3VwX2J5KHllYXIpICU+JQogIHN1bW1hcml6ZSh2b3Rlcl90dXJub3V0ID0gbWVkaWFuKHZvdGVyX3R1cm5vdXQpKQptZWRfdnQKYGBgCgpgYGB7cn0KZ2dwbG90KGNvdW50aWVzX2NsZWFuLCBhZXMoeCA9IHZvdGVyX3R1cm5vdXQsIHkgPSAxKSkgKwogIGdlb21fYm94cGxvdCgpICsKICBmYWNldF9ncmlkKHJvd3MgPSB2YXJzKHllYXIpKQpgYGAKClByaW9yYXQgYW5kIFRlcnJhIEFsdGEgaGFkIGFuIGluY3JlZGlibHkgaGlnaCB2b3RlciB0dXJub3V0IGNvbXBhcmVkIHRvCnRoZSByZXN0IGluIDIwMTUgYXQgNzUlIGFuZCA3OC43JS4KCmBgYHtyfQpjb3VudGllc19jbGVhbiAlPiUKICBmaWx0ZXIodm90ZXJfdHVybm91dCA+IDc1ICYgeWVhciA9PSAiMjAxNSIpCmBgYAoKSGVyZSBpcyBhIG1vcmUgZGV0YWlsZWQgdmlldyBvZiB0aGUgZGlzdHJpYnV0aW9uIG9mIGNvdW50aWVzIG9uIHZvdGVyCnR1cm5vdmVyIHBlcmNlbnRhZ2VzLgoKYGBge3J9CmdncGxvdChjb3VudGllc19jbGVhbikgKwogIGdlb21faGlzdG9ncmFtKGFlcyh4ID0gdm90ZXJfdHVybm91dCksIGJpbnMgPSAzMCkgKwogICMgZ2VvbV92bGluZSh4aW50ZXJjZXB0ID0gbWVkaWFuKHZvdGVyX3R1cm5vdXQpKSArCiAgZmFjZXRfZ3JpZChyb3dzID0gdmFycyh5ZWFyKSkKYGBgCg==