gpt4 book ai didi

r - 如何在ggplot中包装图例文本?

转载 作者:行者123 更新时间:2023-12-05 04:33:03 26 4
gpt4 key购买 nike

这是我的数据头:

structure(list(aasta = c(2012, 2013, 2014, 2015, 2016, 2017, 
2018, 2019, 2020, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019,
2020), tunnus1 = c("Ennetähtaegselt vanaduspensionile minejate arv",
"Ennetähtaegselt vanaduspensionile minejate arv", "Ennetähtaegselt vanaduspensionile minejate arv",
"Ennetähtaegselt vanaduspensionile minejate arv", "Ennetähtaegselt vanaduspensionile minejate arv",
"Ennetähtaegselt vanaduspensionile minejate arv", "Ennetähtaegselt vanaduspensionile minejate arv",
"Ennetähtaegselt vanaduspensionile minejate arv", "Ennetähtaegselt vanaduspensionile minejate arv",
"Vanaduspensionile minejate arv", "Vanaduspensionile minejate arv",
"Vanaduspensionile minejate arv", "Vanaduspensionile minejate arv",
"Vanaduspensionile minejate arv", "Vanaduspensionile minejate arv",
"Vanaduspensionile minejate arv", "Vanaduspensionile minejate arv",
"Vanaduspensionile minejate arv"), vaartus1 = c(1022, 1173, 1129,
1083, 1294, 1026, 862, 751, 764, 6529, 7683, 6797, 6892, 8106,
6922, 6502, 6098, 5817), tunnus2 = c("Ennetähtaegselt vanaduspensionile minejate osakaal kõigist eelmisel aastal VTI-dest",
"Ennetähtaegselt vanaduspensionile minejate osakaal kõigist eelmisel aastal VTI-dest",
"Ennetähtaegselt vanaduspensionile minejate osakaal kõigist eelmisel aastal VTI-dest",
"Ennetähtaegselt vanaduspensionile minejate osakaal kõigist eelmisel aastal VTI-dest",
"Ennetähtaegselt vanaduspensionile minejate osakaal kõigist eelmisel aastal VTI-dest",
"Ennetähtaegselt vanaduspensionile minejate osakaal kõigist eelmisel aastal VTI-dest",
"Ennetähtaegselt vanaduspensionile minejate osakaal kõigist eelmisel aastal VTI-dest",
"Ennetähtaegselt vanaduspensionile minejate osakaal kõigist eelmisel aastal VTI-dest",
"Ennetähtaegselt vanaduspensionile minejate osakaal kõigist eelmisel aastal VTI-dest",
"Vanaduspensionile minejate osakaal kõigist eelmisel aastal VTI-dest",
"Vanaduspensionile minejate osakaal kõigist eelmisel aastal VTI-dest",
"Vanaduspensionile minejate osakaal kõigist eelmisel aastal VTI-dest",
"Vanaduspensionile minejate osakaal kõigist eelmisel aastal VTI-dest",
"Vanaduspensionile minejate osakaal kõigist eelmisel aastal VTI-dest",
"Vanaduspensionile minejate osakaal kõigist eelmisel aastal VTI-dest",
"Vanaduspensionile minejate osakaal kõigist eelmisel aastal VTI-dest",
"Vanaduspensionile minejate osakaal kõigist eelmisel aastal VTI-dest",
"Vanaduspensionile minejate osakaal kõigist eelmisel aastal VTI-dest"
), vaartus2 = c(0.01, 0.011, 0.01, 0.01, 0.012, 0.009, 0.008,
0.007, 0.007, 0.066, 0.073, 0.063, 0.064, 0.074, 0.062, 0.059,
0.057, 0.054)), row.names = c(NA, -18L), class = c("tbl_df",
"tbl", "data.frame"))

我的颜色:

cen_col_palette <- function(){
c("#1C5679",
"#808C5C",
"#BF2124",
"#D88F2E",
"#5F4B3B",
"#BBB592",
"#87240E",
"#7A989A",
"#204035",
"#F4CE4B",
"#805730",
"#D4613E",
"#212F3D",
"#145A32",
"#808080",
"#E74C3C")
}
cen_cols <- cen_col_palette()

这是我的情节:

ggplot(ennet1, aes(y = vaartus2, x = aasta, group=tunnus2, label=scales::percent(vaartus2,decimal.mark=',',accuracy = 0.1)))+
geom_line(aes(color=tunnus2, linetype=tunnus2))+
geom_point(aes(color=tunnus2))+
geom_label(vjust = -0.6, label.size = 0, label.padding = unit(0.3, "lines"), size = 3.5)+
scale_x_continuous(breaks = seq(2012,2020,by=2))+
scale_y_continuous(labels = scales::percent_format(decimal.mark = ',',accuracy=1), expand = expansion(mult = c(0, 0.5)))+
cen_theme()+
theme(
strip.background =element_blank(),
strip.text =element_text(size=11),
axis.title.y = element_text(angle = 90),
axis.text.x = element_text(size = 11),
axis.text.y = element_text(size = 11),
legend.text = element_text(size = 11))+
scale_fill_manual(values = cen_cols)+
scale_color_manual(values = cen_cols)+
theme(legend.title = element_blank())+
theme(plot.title = element_text(size = 11, hjust=0.5))+
theme(axis.title.x = element_blank())+
theme(axis.title.y = element_blank())+
theme(legend.key.height=unit(2, "cm"))+
theme(legend.position="top", legend.box="vertical", legend.margin=margin())

这是图表现在的样子:

enter image description here

如您所见,图例标题太长,我想将它们换行。我尝试了 library(stringr) 并添加了 str_wrap,但我真的不知道把它放在哪里而且它没有用。

提前致谢!

最佳答案

您可以使用 guide_legend 将文本换成两行,并更改 legend.text 中文本的大小。您可以使用此代码:

library(scales)
library(tidyverse)
ggplot(ennet1, aes(y = vaartus2, x = aasta, group=tunnus2, label=scales::percent(vaartus2,decimal.mark=',',accuracy = 0.1)))+
geom_line(aes(color=tunnus2, linetype=tunnus2))+
geom_point(aes(color=tunnus2))+
geom_label(vjust = -0.6, label.size = 0, label.padding = unit(0.3, "lines"), size = 3.5)+
scale_x_continuous(breaks = seq(2012,2020,by=2))+
scale_y_continuous(labels = scales::percent_format(decimal.mark = ',',accuracy=1), expand = expansion(mult = c(0, 0.5)))+
#cen_theme()+
theme(
strip.background =element_blank(),
strip.text =element_text(size=11),
axis.title.y = element_text(angle = 90),
axis.text.x = element_text(size = 11),
axis.text.y = element_text(size = 11),
legend.text = element_text(size = 11))+
#scale_fill_manual(values = cen_cols)+
#scale_color_manual(values = cen_cols)+
theme(legend.title = element_blank())+
theme(plot.title = element_text(size = 11, hjust=0.5))+
theme(axis.title.x = element_blank())+
theme(axis.title.y = element_blank())+
theme(legend.key.height=unit(2, "cm"))+
theme(legend.position="top", legend.box="vertical", legend.margin=margin()) +
theme(legend.text=element_text(size=8)) +
guides(colour = guide_legend(nrow = 2))

输出:

enter image description here

关于r - 如何在ggplot中包装图例文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71501905/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com