gpt4 book ai didi

r - 阻止 ggplot2 中的文本标签重叠

转载 作者:行者123 更新时间:2023-12-02 19:20:57 26 4
gpt4 key购买 nike

所以我有一个像这样的数据框

df <- structure(list(Reportable = c("A", "B", 
"A", "B", "A",
"B", "A", "B",
"A", "B", "A",
"B", "A", "B"
), Location1_Description = c("MAIN/BRANCH", "MAIN/BRANCH", "YARD",
"YARD", "PART", "PART", "SHOP",
"SHOP", "LOT", "LOT", "HIGHWAY/ROADWAY",
"HIGHWAY/ROADWAY", "OFFICE", "OFFICE"
), count = c(146L, 447L, 83L, 241L, 44L, 89L, 38L, 83L, 16L,
28L, 4L, 30L, 11L, 21L), pct = c("25%", "75%", "26%", "74%",
"33%", "67%", "31%", "69%", "36%", "64%", "12%", "88%", "33%",
"64%"), total = c("146 (25%)", "447 (75%)", "83 (26%)", "241 (74%)",
"44 (33%)", "89 (67%)", "38 (31%)", "83 (69%)", "16 (36%)", "28 (64%)",
"4 (12%)", "30 (88%)", "11 (33%)", "21 (64%)"), total1 = c("146\n(25%)",
"447\n(75%)", "83\n(26%)", "241\n(74%)", "44\n(33%)", "89\n(67%)",
"38\n(31%)", "83\n(69%)", "16\n(36%)", "28\n(64%)", "4\n(12%)",
"30\n(88%)", "11\n(33%)", "21\n(64%)")), row.names = c(NA, -14L
), class = c("tbl_df", "tbl", "data.frame"))


我是这样绘制的

library(tidyverse)
library(stringr)
library(ggthemes)
ggplot(df, aes(fill=Reportable, y=count, x=as.factor(Location1_Description), label = total)) +
geom_bar(position="stack", stat="identity")+
aes(stringr::str_wrap(as.factor(Location1_Description), 15), count) +
labs(x = "", y = "Injury Count", fill = "")+
geom_text(size = 3, position = position_stack(vjust = 0.5)) +
scale_fill_manual(values = c("darkorange", "cornflowerblue") ) +
theme_hc() +
coord_flip()

如果您注意到,标签在图中始终相互重叠。我尝试过一些尺寸更改,但无法使其看起来清晰。我怎样才能清楚地了解每个迷你酒吧在说什么???

我的最终结果应该是一个图,我可以清楚地看到每个柱的 count/pct(total)。

最佳答案

另一个选项是使用 ggfittext包。

library(tidyverse)
library(stringr)
library(ggthemes)

df <- data.frame(
stringsAsFactors = FALSE,
Reportable = c("A","B","A","B","A","B","A","B",
"A","B","A","B","A","B"),
Location1_Description = c("MAIN/BRANCH","MAIN/BRANCH","YARD",
"YARD","PART","PART","SHOP","SHOP",
"LOT","LOT","HIGHWAY/ROADWAY",
"HIGHWAY/ROADWAY","OFFICE","OFFICE"),
count = c(146L,447L,83L,241L,44L,89L,38L,
83L,16L,28L,4L,30L,11L,21L),
pct = c("25%","75%","26%","74%","33%","67%",
"31%","69%","36%","64%","12%",
"88%","33%","64%"),
total = c("146 (25%)","447 (75%)","83 (26%)",
"241 (74%)","44 (33%)","89 (67%)",
"38 (31%)","83 (69%)","16 (36%)","28 (64%)",
"4 (12%)","30 (88%)","11 (33%)",
"21 (64%)"),
total1 = c("146\n(25%)","447\n(75%)","83\n(26%)",
"241\n(74%)","44\n(33%)","89\n(67%)",
"38\n(31%)","83\n(69%)","16\n(36%)",
"28\n(64%)","4\n(12%)","30\n(88%)",
"11\n(33%)","21\n(64%)")
)

p <- ggplot(df, aes(fill = Reportable, y = count, x = as.factor(Location1_Description), label = total)) +
geom_bar(position = "stack", stat = "identity") +
aes(stringr::str_wrap(as.factor(Location1_Description), 15), count) +
labs(x = "", y = "Injury Count", fill = "") +
scale_fill_manual(values = c("darkorange", "cornflowerblue")) +
theme_hc() +
coord_flip()

library(ggfittext)
p +
geom_bar_text(position = "stack",
outside = TRUE,
min.size = 2,
reflow = TRUE)

p +
geom_bar_text(position = "stack",
outside = TRUE,
grow = FALSE,
min.size = 2)

reprex package于2020年7月24日创建(v0.3.0)

关于r - 阻止 ggplot2 中的文本标签重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63079037/

26 4 0