如何在使用 geom_text、粘贴和 \n 时减少 space
How to reduce space when using geom_text, paste and \n
我在 ggplot2 中使用 geom_text、粘贴和 \n 函数将来自估计值和标准误差的文本添加到条形图中。
geom_text(aes(label=paste(round(Percent,0), "%", "\n(",round(SE*100, 2), ")", sep = "")), position=position_dodge(width=0.9), vjust=-0.25)
我将这些数字堆叠在一起。
但是,图中的估计值和标准误差之间的差距比我希望的要大。我怎样才能减少这个白色的 space 差距?
剧情如下:
这里是重现情节的代码:
Plot_DF.2.2 <- structure(list(V = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L
), .Label = c("Unvaccinated", "Vaccinated"), class = "factor"),
SN = structure(c(1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L), .Label = c("0",
"1", "2", "3"), class = "factor"), Freq = c(323L, 221L, 144L,
84L, 101L, 222L, 398L, 976L), Total = c(772L, 772L, 772L,
772L, 1697L, 1697L, 1697L, 1697L), Percent = c(41.839378238342,
28.6269430051813, 18.6528497409326, 10.880829015544, 5.95167943429582,
13.0819092516205, 23.4531526222746, 57.5132586918091), Proportion = c(0.41839378238342,
0.286269430051813, 0.186528497409326, 0.10880829015544, 0.0595167943429582,
0.130819092516205, 0.234531526222746, 0.575132586918091),
SE = c(0.0177540926189768, 0.0162684428410836, 0.0140195836873372,
0.0112074784287869, 0.00574320564141126, 0.00818558521265792,
0.0102854512025968, 0.0119996831224857), margin.error = c(0.0348520936473382,
0.0319356953668124, 0.0275210822684065, 0.0220007913743278,
0.0112645151307286, 0.0160549097906227, 0.0201735107415641,
0.023535743021727), lower = c(0.383541688736081, 0.254333734685001,
0.15900741514092, 0.0868074987811126, 0.0482522792122296,
0.114764182725582, 0.214358015481182, 0.551596843896364),
upper = c(0.453245876030758, 0.318205125418626, 0.214049579677733,
0.130809081529768, 0.0707813094736867, 0.146874002306828,
0.25470503696431, 0.598668329939818)), row.names = c(NA,
8L), class = "data.frame")
P2 <- ggplot(Plot_DF.2.2, aes(x = SN, y =Proportion, fill = SN)) +
facet_wrap(V ~ .) +
geom_bar(stat="identity") +
labs(x = "Number of Vaccinated Discussants in Respondents' Social Network",
# y = "Percent",
title = "Distribution of Vaccination in Social Networks",
subtitle = "Conditional on Vaccination Status",
caption = "Note: Numbers represent estimated percentage with estimates' standard errors in parentheses.\nError bar respresents confidence interval around the estimate.") +
theme_minimal() +
scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
theme(legend.position = "none",
plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5),
plot.caption= element_text(hjust = 0),
axis.title.y=element_blank()) +
geom_text(aes(label=paste(round(Percent,0), "%", "\n(",round(SE*100, 2), ")", sep = "")), position=position_dodge(width=0.9), vjust=-0.25); P2
谢谢!
geom_text
采用 lineheight
参数,默认为 1.2。这是 0.9:
ggplot(Plot_DF.2.2, aes(x = SN, y = Proportion, fill = SN)) +
facet_wrap(V ~ .) +
geom_col() +
labs(x = "Number of Vaccinated Discussants in Respondents' Social Network",
title = "Distribution of Vaccination in Social Networks",
subtitle = "Conditional on Vaccination Status",
caption = paste("Note: Numbers represent estimated percentage with",
"estimates' standard errors in parentheses.",
"\nError bar represents confidence interval",
"around the estimate.")) +
theme_minimal() +
scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
theme(legend.position = "none",
plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5),
plot.caption= element_text(hjust = 0),
axis.title.y=element_blank()) +
geom_text(aes(label = paste0(round(Percent,0), "%", "\n(", round(SE*100, 2), ")")),
position = position_dodge(width = 0.9), vjust = -0.25,
lineheight = 0.9)
我在 ggplot2 中使用 geom_text、粘贴和 \n 函数将来自估计值和标准误差的文本添加到条形图中。
geom_text(aes(label=paste(round(Percent,0), "%", "\n(",round(SE*100, 2), ")", sep = "")), position=position_dodge(width=0.9), vjust=-0.25)
我将这些数字堆叠在一起。
但是,图中的估计值和标准误差之间的差距比我希望的要大。我怎样才能减少这个白色的 space 差距?
剧情如下:
这里是重现情节的代码:
Plot_DF.2.2 <- structure(list(V = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L
), .Label = c("Unvaccinated", "Vaccinated"), class = "factor"),
SN = structure(c(1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L), .Label = c("0",
"1", "2", "3"), class = "factor"), Freq = c(323L, 221L, 144L,
84L, 101L, 222L, 398L, 976L), Total = c(772L, 772L, 772L,
772L, 1697L, 1697L, 1697L, 1697L), Percent = c(41.839378238342,
28.6269430051813, 18.6528497409326, 10.880829015544, 5.95167943429582,
13.0819092516205, 23.4531526222746, 57.5132586918091), Proportion = c(0.41839378238342,
0.286269430051813, 0.186528497409326, 0.10880829015544, 0.0595167943429582,
0.130819092516205, 0.234531526222746, 0.575132586918091),
SE = c(0.0177540926189768, 0.0162684428410836, 0.0140195836873372,
0.0112074784287869, 0.00574320564141126, 0.00818558521265792,
0.0102854512025968, 0.0119996831224857), margin.error = c(0.0348520936473382,
0.0319356953668124, 0.0275210822684065, 0.0220007913743278,
0.0112645151307286, 0.0160549097906227, 0.0201735107415641,
0.023535743021727), lower = c(0.383541688736081, 0.254333734685001,
0.15900741514092, 0.0868074987811126, 0.0482522792122296,
0.114764182725582, 0.214358015481182, 0.551596843896364),
upper = c(0.453245876030758, 0.318205125418626, 0.214049579677733,
0.130809081529768, 0.0707813094736867, 0.146874002306828,
0.25470503696431, 0.598668329939818)), row.names = c(NA,
8L), class = "data.frame")
P2 <- ggplot(Plot_DF.2.2, aes(x = SN, y =Proportion, fill = SN)) +
facet_wrap(V ~ .) +
geom_bar(stat="identity") +
labs(x = "Number of Vaccinated Discussants in Respondents' Social Network",
# y = "Percent",
title = "Distribution of Vaccination in Social Networks",
subtitle = "Conditional on Vaccination Status",
caption = "Note: Numbers represent estimated percentage with estimates' standard errors in parentheses.\nError bar respresents confidence interval around the estimate.") +
theme_minimal() +
scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
theme(legend.position = "none",
plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5),
plot.caption= element_text(hjust = 0),
axis.title.y=element_blank()) +
geom_text(aes(label=paste(round(Percent,0), "%", "\n(",round(SE*100, 2), ")", sep = "")), position=position_dodge(width=0.9), vjust=-0.25); P2
谢谢!
geom_text
采用 lineheight
参数,默认为 1.2。这是 0.9:
ggplot(Plot_DF.2.2, aes(x = SN, y = Proportion, fill = SN)) +
facet_wrap(V ~ .) +
geom_col() +
labs(x = "Number of Vaccinated Discussants in Respondents' Social Network",
title = "Distribution of Vaccination in Social Networks",
subtitle = "Conditional on Vaccination Status",
caption = paste("Note: Numbers represent estimated percentage with",
"estimates' standard errors in parentheses.",
"\nError bar represents confidence interval",
"around the estimate.")) +
theme_minimal() +
scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
theme(legend.position = "none",
plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5),
plot.caption= element_text(hjust = 0),
axis.title.y=element_blank()) +
geom_text(aes(label = paste0(round(Percent,0), "%", "\n(", round(SE*100, 2), ")")),
position = position_dodge(width = 0.9), vjust = -0.25,
lineheight = 0.9)