![](/img/trans.png)
[英]ggplot customize legend for geom_point shapes and remove background
[英]Remove legend background for geom_point in combined ggplot
我希望圖例只顯示Proporció sobre la despesa total
的黑點,沒有紫色背景。
這是我的數據集的示例:
structure(list(decils_renda = structure(1:10, .Label = c("1r",
"2n", "3r", "4t", "5è", "6è", "7è", "8è", "9è", "10è"), class = "factor"),
despesatotal = c(2681.8, 3543.7, 3960.3, 4356.8, 4767.3,
5229.9, 5057.8, 5799.5, 6096.8, 7228.4), despesamonetaria = c(2654,
3516, 3918.1, 4308.8, 4722.8, 5160.9, 5027, 5746.5, 6068.3,
7181.6), proporcio_despesatotal = c(18.6, 19, 18.4, 17.8,
17.1, 17.2, 16.6, 16, 15.2, 13.4), proporcio_despesamonetaria = c(26.7,
26.2, 24.2, 23.4, 21.9, 21.5, 20.9, 20.1, 19.2, 17.1), proporcio_despesatotal_ingressos = c(32.7,
26.1, 23.4, 20.1, 18.8, 17.8, 14.7, 15.2, 13.2, 10.4), proporcio_despesamonetaria_ingressos = c(32.3,
25.9, 23.2, 19.9, 18.6, 17.6, 14.6, 15.1, 13.1, 10.4)), row.names = c(NA,
-10L), class = c("tbl_df", "tbl", "data.frame"))
這是我用於圖表的代碼:
plotalimentacio_2021_decils <- ggplot(alimentacio_2021_decils) +
geom_col(aes(fct_inorder(decils_renda), despesamonetaria, color="despesamonetaria"), fill="#9A6584", width=0.5, alpha=1) +
geom_point(aes(fct_inorder(decils_renda), proporcio_despesamonetaria_ingressos*100, color="Proporció sobre els ingressos anuals"), size=3) +
scale_color_manual(name="", labels=c("Despesa monetària", "Proporció sobre els ingressos anuals (eix dret)"), values=c("#9a6584","#000000")) +
scale_y_continuous(labels=function(x) format(x, big.mark = ".", scientific = FALSE), breaks=seq(from=0, to=8000, by=1000),
expand = expansion(mult = c(0, .05)),
sec.axis=sec_axis(~ ./100 , breaks = seq(0, 100, by = 10), name = "% sobre el total d'ingressos")) +
geom_hline(yintercept=0, color="black")+
labs(
title="Despesa en alimentació per decils de renda a Espanya (2021)",
subtitle="En euros i proporció sobre els ingressos anuals",
x = "Decils de renda",
y="",
caption="Font: Elaboració pròpia a partir de dades de l'Enquesta de pressupostos familiars del 2021, base 2016, de l'INE.") +
theme(
legend.position = "bottom",
legend.justification = "left",
legend.direction="horizontal",
legend.margin=margin(t=-25),
legend.text=element_text(size=12),
legend.box.margin = margin(0,1,0.5,-1,"cm"))
問題是您正在嘗試使單個圖例同時適用於填充和顏色元素,但不想將它們組合在一起。 解決方案是使用兩個單獨的圖例,一個用於填充,一個用於顏色。
ggplot(alimentacio_2021_decils) +
# Notice I've gotten rid of color for the geom_col
geom_col(aes(fct_inorder(decils_renda), despesamonetaria, fill = 'despesamonetaria'), width=0.5, alpha=1)+
geom_point(aes(fct_inorder(decils_renda), proporcio_despesamonetaria_ingressos*100, color="Proporció sobre els ingressos anuals"), size=3)+
# I've added scale_fill_manual just referring to the bar
scale_fill_manual(name = '', labels = "Despesa monetària", values = "#9a6584") +
# and scale_color_manual is edited to just refer to the point
scale_color_manual(name="", labels="Proporció sobre els ingressos anuals (eix dret)", values="#000000") +
scale_y_continuous(labels=function(x) format(x, big.mark = ".", scientific = FALSE), breaks=seq(from=0, to=8000, by=1000),
expand = expansion(mult = c(0, .05)),
sec.axis=sec_axis(~ ./100 , breaks = seq(0, 100, by = 10), name = "% sobre el total d'ingressos")) +
geom_hline(yintercept=0, color="black")+
labs(
title="Despesa en alimentació per decils de renda a Espanya (2021)",
subtitle="En euros i proporció sobre els ingressos anuals",
x = "Decils de renda",
y="",
caption="Font: Elaboració pròpia a partir de dades de l'Enquesta de pressupostos familiars del 2021, base 2016, de l'INE.") +
theme(
legend.position = "bottom",
legend.justification = "left",
legend.direction="horizontal",
legend.margin=margin(t=-25),
legend.text=element_text(size=12),
legend.box.margin = margin(0,1,0.5,-1,"cm"))
你給出的代碼示例導致圖例與 x 軸標題重疊,我沒有改變它,但你可以在這里看到圖例看起來是正確的
解決問題的一種選擇是使用guide_legend
的override.aes
參數來擺脫“黑色”類別的fill
,使用
guides(color = guide_legend(override.aes = list(fill = c("#9a6584", NA)))
此外,在下面的代碼中,我使用l.netype="blank"
刪除了圖例鍵周圍的輪廓,最后通過主題選項刪除了圖例鍵背景的填充顏色。
library(ggplot2)
library(forcats)
ggplot(alimentacio_2021_decils) +
geom_col(aes(fct_inorder(decils_renda), despesamonetaria, color = "despesamonetaria"),
fill = "#9A6584", width = 0.5, alpha = 1
) +
geom_point(aes(fct_inorder(decils_renda), proporcio_despesamonetaria_ingressos * 100,
color = "Proporció sobre els ingressos anuals"
), size = 3) +
scale_color_manual(
name = "", labels = c("Despesa monetària", "Proporció sobre els ingressos anuals (eix dret)"),
values = c("#9a6584", "#000000")
) +
scale_y_continuous(
labels = scales::label_number(big.mark = ".", decimal.mark = ","),
breaks = seq(from = 0, to = 8000, by = 1000),
expand = expansion(mult = c(0, .05)),
sec.axis = sec_axis(~ . / 100, breaks = seq(0, 100, by = 10), name = "% sobre el total d'ingressos")
) +
geom_hline(yintercept = 0, color = "black") +
labs(
title = "Despesa en alimentació per decils de renda a Espanya (2021)",
subtitle = "En euros i proporció sobre els ingressos anuals",
x = "Decils de renda",
y = "",
caption = "Font: Elaboració pròpia a partir de dades de l'Enquesta de pressupostos familiars del 2021, base 2016, de l'INE."
) +
theme(
legend.position = "bottom",
legend.justification = "left",
legend.direction = "horizontal",
legend.key = element_rect(fill = NA),
# legend.margin = margin(t = -25),
legend.text = element_text(size = 12),
# legend.box.margin = margin(0, 1, 0.5, 0, "cm")
) +
guides(color = guide_legend(override.aes = list(fill = c("#9a6584", NA), linetype = "blank")))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.