在 face_wrap() ggplot2 中更改方面标签

Changing facet labels in face_wrap() ggplot2

所以下面的代码工作 w/out 错误,我正在尝试解决以下问题。

首先,我尝试更改每个图表的组名称,例如,“< 1500 美元”指的是收入 1500 美元或以下的工人组等...

我试过这个 solution:更改基础因子水平名称,但我一直收到此错误:

“错误:意外的‘,’在‘‘< 1500 美元’,”》

outflows <- Wage_Outflows
levels(outflows$wage_group)
"< 1500",     "1501 ~ 2999", "3000", 
levels(outflows$wage_group) <- c("< 1500 Dollars", "1501 ~ 2999 Dollars", "3000 Dollars")
text.on.each.panel <-"Dollars"

p1 = ggplot(Wage_Outflows[Wage_Outflows$wage_group=="< 1500",], aes(x = year, y = labor)) +
       geom_point() +
       scale_y_continuous(breaks=seq(4000000, 6500000, by = 400000)) +
                             facet_wrap(~ wage_group) + theme(axis.title.x = element_blank())

p2 = ggplot(Wage_Outflows[Wage_Outflows$wage_group=="1501 ~ 2999",], aes(x = year, y = labor)) +
       geom_point() +
       scale_y_continuous(breaks=seq(800000, 1100000, by = 20000)) +
       facet_wrap(~ wage_group) + theme(axis.title.x = element_blank())


p3 = ggplot(Wage_Outflows[Wage_Outflows$wage_group=="3000",], aes(x = year, y = labor)) +
       geom_point() +
       scale_y_continuous(breaks=seq(50000, 120000, by = 5000)) +
       facet_wrap(~ wage_group) + theme(axis.title.x = element_blank())


grid.arrange(p1, p2,p3, ncol=1)

对于第一个问题,请查看 facet_wrap 函数中的 labeller 参数。

对于你的第二个问题,labs 函数可能是解决方案。

p1 = ggplot(Wage_Outflows[Wage_Outflows$wage_group=="< 1500",], 
     aes(x = year, y = labor)) +
     geom_point() +
     scale_y_continuous(breaks=seq(4000000, 6500000, by = 400000)) +
     labs(y = "Number of workers") +
     facet_wrap(~ wage_group, labeller = labeller(wage_group = c(`< 1500` = "< 1500 
     dollars"))) +
     theme(axis.title.x = element_blank())

也许您可以这样缩短代码:

# Example dataset: 

df <- data.frame(wage_group = rep(c("A","B","C"), each = 10),
                 year = 2001:2010,
                 labor = seq(5000,34000, 1000))


ggplot(df , aes(x = factor(year), y = labor)) +
  geom_point() +
  labs(y = "# of workers") +
  facet_wrap(~wage_group, ncol = 1, scales = "free",
             labeller = labeller(wage_group = c(`A` = "less than 1500 dollars", 
             `B` = "1500-2999 dollars", `C` = "more than 3000 dollars"))) +
  theme(axis.title.x = element_blank())