Packages we will need:

```
library(tidyverse)
library(forcats)
library(ggparliament)
```

Check out part 1 of this blog where you can follow along how to scrape the data that we will use in *this *blog. It will create a dataset of the current MPs in the Irish Dail.

In this blog, we will use the ggparliament package, created by Zoe Meers.

With this dataset of the 33rd Dail, we will reduce it down to get the number of seats that each party holds.

If we don’t want to graph every party, we can lump most of the smaller parties into an “other” category. We can do this with the `fct_lump_n() `

function from the `forcats `

package. I want the top five biggest parties only in the graph. The rest will be colored as “Other”.

Click here to read more about the `forcats `

pacakge and dealing with factors in R.

```
dail_33 %>%
mutate(party_groups = fct_lump_n(party, n = 5,
other_level = "Other"))-> dail_lump_count
```

Next we want to count the number of members per party.

```
dail_lump_count %>%
group_by(party_groups) %>%
count() %>%
arrange(desc(n)) -> dail_count
```

```
<fct> <int>
1 Fianna Fail 38
2 Sinn Fein 37
3 Fine Gael 35
4 Independent 19
5 Other 19
6 Green Party 12
```

Before we graph, I found the hex colors that represent each of the biggest Irish political party. We can create a new party color variables with the `case_when()`

function and add each color.

```
dail_count %<>%
mutate(party_color = case_when(party_groups == "Fianna Fail" ~ "#66bb66",
party_groups == "Fine Gael" ~ "#6699ff",
party_groups == "Green Party" ~ "#44532a",
party_groups == "Independent" ~ "#8e2420",
party_groups == "Sinn Fein" ~ "#326760",
party_groups == "Other" ~ "#ee9f27"))
```

Now we can dive into the `ggparliament `

package.

We use the `parliamenet_data() `

function to create coordinates for our graph: these are the `x`

and `y`

variables we will plot out.

We feed in the data.frame of all the seat counts into the `election_data`

argument.

We specifiy the type as “`semi-circle`

“. Other options are “`horseshoe`

” and “`opposing_benches`

“.

We can change how many circles we want stacked on top of each other.

I tried it with three and it looked quite strange. So play around with this `parl_rows`

argument to see what suits your data best

And last we feed in the number of seats that each party has with the `n`

we summarised above.

```
dail_33_coord <- parliament_data(election_data = dail_count,
type = "semicircle",
parl_rows = 6,
party_seats = dail_count$n)
```

If we view the `dail_33_coord data.frame`

we can see that the `parliament_data()`

function calculated new `x`

and `y`

coordinate variables for the semi-circle graph.

I don’t know what the theta variables is for… But there it is also … maybe to make circular shapes?

We feed the x and y coordinates into the` ggplot()`

function and then add the `geom_parliament_seat()`

layer to produce our graph!

Click here to check out the PDF for the ggparliament package

```
dail_33_coord %>%
ggplot(aes(x = x,
y = y,
colour = party_groups)) +
geom_parliament_seats(size = 20) -> dail_33_plot
```

And we can make it look more pretty with `bbc_style()`

plot and colors.

Click here to read more about the BBC style graphs.

```
dail_33_plot + bbplot::bbc_style() +
ggtitle("33rd Irish Parliament") +
theme(text = element_text(size = 50),
legend.title = element_blank(),
axis.text.x = element_blank(),
axis.text.y = element_blank()) +
scale_colour_manual(values = dail_33_coord$party_color,
limits = dail_33_coord$party_groups)
```