如何更改facet_wrap中的构面标签

时间:2014-11-20 01:25:04

标签: r ggplot2 shiny facet-wrap

我正在使用ggplot和facet_wrap来获取所需的图。我必须在每个方面的标签或每个方面的变量或名称上添加一些内容,就像我们如何直接在ggplot下修改xlab和ylab一样。

示例:

d <- ggplot(diamonds, aes(carat, price, fill = ..density..)) +
  xlim(0, 2) + stat_binhex(na.rm = TRUE) + theme(aspect.ratio = 1)

d + facet_wrap(~ color)

enter image description here

我现在要做的就是将每个方面的标签i,e D,E,F,G,H,I,J更改为其他内容。

我该如何修改?

加成

抱歉,我试图打破它,但是需要时间,所以我在github中添加了它。 您可以上传文件并检查结果。 问题在于选项4 facet_wrap ...您可以选择单选按钮选项4。

我已经评论过我在数据完整性正常的前面使用的facet_wrap,但是如果我更改了facet包装,那么图表的行为也会不同,而且数据也是如此。

要上传的数据可在“要上传的数据”文件夹中找到

代码可以在这里找到:我将在一分钟内添加

2 个答案:

答案 0 :(得分:5)

根据我所知,facet_grid在这种情况下可能是更好的解决方案。 facet_grid不仅可以帮助您按一个变量对图进行分组,还可以帮助您对两个甚至更多变量进行分组,有一个名为labeller的参数可用于自定义标签。

myfunction <- function(var, string) {
  print(var)
  print(string)
  result <- paste(as.character(string),'_new', sep="")
  return(result)
}

ggplot(diamonds, aes(carat, price, fill = ..density..)) + xlim(0, 2) + 
  stat_binhex(na.rm = TRUE) + theme(aspect.ratio = 1) + facet_grid(~color, labeller=myfunction, as.table=TRUE)

# OUTPUT
[1] "color"
[1] D E F G H I J
Levels: D < E < F < G < H < I < J

enter image description here

但是,正如您所看到的,情节是一行的,即使您根据here打开as.table标记,我也认为它不容易分成多行。

如果您添加专用于标签的新列,您认为这是否可行?然后你可以保持facet_wrap ...

的精彩
diamonds$label <- paste(as.character(diamonds$color), "_new", sep="")
ggplot(diamonds, aes(carat, price, fill = ..density..)) + xlim(0, 2) + 
  stat_binhex(na.rm = TRUE) + theme(aspect.ratio = 1) + facet_wrap(~label)

enter image description here

答案 1 :(得分:4)

虽然这是一个非常古老的问题,但我想回答它,因为我学会了一种简单的方法!!

此解决方案使用facet_wrap(),并且不会以任何方式更改数据。

CurrentFrmMain := ptrFrmMain