Map the shape
aesthetic inside the geom_point()
function and use scale_shape_manual(values = c("čistý tržní příjem" = 18))
I had to reorganize your code a little bit to make my way around it but I think you can get the idea from this example:
library(ggplot2)
data_plot <- structure(list(country = c("Irsko", "Portugalsko", "Španělsko",
"Německo", "Litva", "Bulharsko", "Belgie", "Francie", "Dánsko",
"Itálie", "Finsko", "Lotyšsko", "Rumunsko", "Švédsko", "Rakousko",
"Nizozemsko", "Estonsko", "Chorvatsko", "Malta", "Řecko", "Lucembursko",
"Kypr", "Maďarsko", "Polsko", "Slovinsko", "Česká rep."),
net_market = c(11.47, 9.39, 10.64, 9.87, 9.38, 10.21, 8.13,
10.66, 9.12, 8.71, 7.76, 8.27, 7.36, 10.29, 7.56, 8.31, 7.18,
6.24, 6.51, 7.88, 8.03, 5.42, 4.16, 5.37, 4.67, 4.52),
gross_market = c(15.69, 12.84, 12.14, 11.73, 11.27, 10.92, 10.72, 10.72, 10.66, 10.61,
9.77, 9.75, 9.73, 9.53, 9.21, 8.52, 8.38, 7.58, 7.58, 7.54,
7.24, 6.35, 5.83, 5.58, 5.53, 5.36),
group = c("abroad", "abroad", "abroad", "abroad", "abroad", "abroad", "abroad",
"abroad", "abroad", "abroad", "abroad", "abroad", "abroad",
"abroad", "abroad", "abroad", "abroad", "abroad", "abroad",
"abroad", "abroad", "abroad", "abroad", "abroad", "abroad",
"Czech"),
value = c(15.69, 12.84, 12.14, 11.73, 11.27, 10.92,
10.72, 10.72, 10.66, 10.61, 9.77, 9.75, 9.73, 9.53, 9.21,
8.52, 8.38, 7.58, 7.58, 7.54, 7.24, 6.35, 5.83, 5.58, 5.53,
5.36)),
row.names = c(NA, -26L), class = c("tbl_df", "tbl", "data.frame"))
ggplot(data_plot,aes(x = reorder(country, -value), y = value)) +
geom_col(aes(fill = group), show.legend = F) +
geom_text(aes(label = scales::comma(ifelse(group=="Czech", value, NA),
accuracy = 0.01, scale = 1, suffix = "",
big.mark = " ", decimal.mark = ",")),
vjust = - 2.5 ,
color = "#00254B",
family = c("Fira Sans Condensed"),
show.legend = F) +
geom_point(aes(y = net_market, shape = "čistý tržní příjem"),
size = 3,
color = "#A6A6A6") +
geom_hline(yintercept = 10.12,
linetype = 'dotted',
col = "#00254B") +
annotate("text", x = "Kypr", y = 10.12
, label = "průměr EU (hrubý)", vjust = -1,
color = "#00254B") +
scale_fill_manual(values = c("#00254B", "#ECB925")) +
scale_shape_manual(values = c("čistý tržní příjem" = 18)) +
scale_y_continuous(label = scales::comma_format(accuracy = 1, scale = 1, prefix = "", suffix = "",
big.mark = " ", decimal.mark = ","),
limits = c(0,20)) +
ggtitle("Kolikrát má 20 % nejbohatších větší příjmy než 20 % nejchudších? \n- hrubý a čistý tržní příjem (2021)") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1, size = 11,
face = ifelse(data_plot$group == "Czech", "bold", "plain"),
color = ifelse(data_plot$group != "Czech", "#00254B", "#ECB925")),
axis.text.y = element_text(size = 11, color = "#00254B"),
text = element_text(size=15, family="Fira Sans Condensed"),
panel.grid.major = element_blank(),
axis.title = element_blank(),
plot.title = element_text(color="#00254B", vjust = -1.5),
legend.position = c(.5,.75),
legend.title=element_blank(),
plot.margin = margin(t = 0,
r = 0,
b = 00,
l = 10))
#> Warning: Vectorized input to `element_text()` is not officially supported.
#> Results may be unexpected or may change in future versions of ggplot2.
#> Warning: Removed 25 rows containing missing values (geom_text).
Created on 2022-10-02 with reprex v2.0.2
Another option is to encode the legend in your title
library(ggplot2)
library(ggtext)
data_plot <- structure(list(country = c("Irsko", "Portugalsko", "Španělsko",
"Německo", "Litva", "Bulharsko", "Belgie", "Francie", "Dánsko",
"Itálie", "Finsko", "Lotyšsko", "Rumunsko", "Švédsko", "Rakousko",
"Nizozemsko", "Estonsko", "Chorvatsko", "Malta", "Řecko", "Lucembursko",
"Kypr", "Maďarsko", "Polsko", "Slovinsko", "Česká rep."),
net_market = c(11.47, 9.39, 10.64, 9.87, 9.38, 10.21, 8.13,
10.66, 9.12, 8.71, 7.76, 8.27, 7.36, 10.29, 7.56, 8.31, 7.18,
6.24, 6.51, 7.88, 8.03, 5.42, 4.16, 5.37, 4.67, 4.52),
gross_market = c(15.69, 12.84, 12.14, 11.73, 11.27, 10.92, 10.72, 10.72, 10.66, 10.61,
9.77, 9.75, 9.73, 9.53, 9.21, 8.52, 8.38, 7.58, 7.58, 7.54,
7.24, 6.35, 5.83, 5.58, 5.53, 5.36),
group = c("abroad", "abroad", "abroad", "abroad", "abroad", "abroad", "abroad",
"abroad", "abroad", "abroad", "abroad", "abroad", "abroad",
"abroad", "abroad", "abroad", "abroad", "abroad", "abroad",
"abroad", "abroad", "abroad", "abroad", "abroad", "abroad",
"Czech"),
value = c(15.69, 12.84, 12.14, 11.73, 11.27, 10.92,
10.72, 10.72, 10.66, 10.61, 9.77, 9.75, 9.73, 9.53, 9.21,
8.52, 8.38, 7.58, 7.58, 7.54, 7.24, 6.35, 5.83, 5.58, 5.53,
5.36)),
row.names = c(NA, -26L), class = c("tbl_df", "tbl", "data.frame"))
ggplot(data_plot,aes(x = reorder(country, -value), y = value)) +
geom_col(aes(fill = group), show.legend = F) +
geom_text(aes(label = scales::comma(ifelse(group=="Czech", value, NA),
accuracy = 0.01, scale = 1, suffix = "",
big.mark = " ", decimal.mark = ",")),
vjust = - 2.5 ,
color = "#00254B",
family = c("Fira Sans Condensed"),
show.legend = F) +
geom_point(aes(y = net_market),
shape = 18,
size = 3,
color = "#A6A6A6") +
geom_hline(yintercept = 10.12,
linetype = 'dotted',
col = "#00254B") +
annotate("text", x = "Kypr", y = 10.12
, label = "průměr EU (hrubý)", vjust = -1,
color = "#00254B") +
scale_fill_manual(values = c("#00254B", "#ECB925")) +
scale_y_continuous(label = scales::comma_format(accuracy = 1, scale = 1, prefix = "", suffix = "",
big.mark = " ", decimal.mark = ","),
limits = c(0,20)) +
labs(
title = "Kolikrát má 20 % nejbohatších větší příjmy než 20 % nejchudších?<br>
- hrubý a <span style = 'color:#A6A6A6;'>čistý tržní příjem</span> (2021)") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1, size = 11,
face = ifelse(data_plot$group == "Czech", "bold", "plain"),
color = ifelse(data_plot$group != "Czech", "#00254B", "#ECB925")),
axis.text.y = element_text(size = 11, color = "#00254B"),
text = element_text(size = 15, family = "Fira Sans Condensed"),
panel.grid.major = element_blank(),
axis.title = element_blank(),
plot.title = element_textbox_simple(color="#00254B", vjust = -1.5),
legend.position = c(.5,.75),
legend.title=element_blank(),
plot.margin = margin(t = 0,
r = 0,
b = 00,
l = 10))
#> Warning: Vectorized input to `element_text()` is not officially supported.
#> Results may be unexpected or may change in future versions of ggplot2.
#> Warning: Removed 25 rows containing missing values (geom_text).
Created on 2022-10-02 with reprex v2.0.2