如何在ggplot2中更改构面标签?

时间:2013-11-17 20:07:12

标签: r ggplot2

我正在尝试更改ggplot2中的构面标签。我找到了this solution

但它不适合我。这是我正在使用的代码

facets <- c("1", "2", "3", "4", "5")

names <- list(
  '1'="one",
  '2'="two",
  '3'="three",
  '4'="four",
  '5'="five"
)

name_labeller <- function(variable,value){
  return(names[value])
}

ggplot(Data[Data$Names %in% facets,], aes(y = y, x = x, group = Names)) + 
  geom_point(shape = 21, size=3, aes(fill=Part)) + 
  scale_fill_manual(values=c("gray90","gray40")) + 
  geom_smooth(method="lm", se= FALSE, size = 1, aes(color = Part, group = Part)) +
  scale_color_manual(values=c("black","black")) +
  geom_smooth(method = 'lm', size = 1, colour = 'red', se = FALSE)  +
  scale_x_log10() + 
  scale_y_log10() + 
  theme_bw() +
  facet_grid(Names ~ ., labeller=name_labeller)

当我运行时,图中的方面读取“一”“三”“四”“[空]”和“[空]”(即最后两个方面未标记),而不是“一” “两个”“三个”“四个”和“五个”。此外,它将“三”分配给方面2,将“四”分配给方面三。

注意:如果我更改列表“名称”中项目的顺序,则会影响标记的构面。似乎name_labeller没有返回正确的单词存在问题,或labeller-name_labeller没有要求正确的内容?

上面链接的这个解决方案是从2010年开始,也许ggplot2从那时起发生了变化?有谁知道如何更改此剧情中的方面标签?

非常感谢!

编辑:另外,如果可能,我想以斜体显示文字,例如“一个”“两个”“三个”“四个”“五个” 。一旦我真正改变了方面,我就会解决这个问题,但如果有人知道,我会很感激!

1 个答案:

答案 0 :(得分:0)

好的,我发现了这个问题。我的数据框中有一个名为Part的分组变量,对于我的绘图中未包含的其他一些数据,这个值为空值(这些是Data$Names的其他值,这些值未包含在我的数据库中列表名为facets)。出于某种原因,即使我没有绘制这些数据,空值也会影响切面。我在我的数据中填写了这些空值,上面的代码现在完美无缺。

感谢Didzis和Joran的评论,这促使我继续工作直到得到答案。