相关疑难解决方法(0)

在facet_wrap图中添加"浮动"轴标签

我和这个用户有同样的问题- 我有一个'锯齿状'刻面图,其中底行的面板比其他行少,我想在每列的底部有x轴刻度.

该问题的建议解决方案是设置scales="free_x".(在ggplot 0.9.2.1中;我相信我正在寻找的行为在早期版本中是默认的.)在我的情况下,这是一个糟糕的解决方案:我的实际轴标签会相当长,所以将它们放在每一行下会占用太多房间.结果是这样的:

 x <- gl(3, 1, 15, labels=paste("this is a very long axis label ", letters[1:5]))
 y <- rnorm(length(x))
 l <- gl(5, 3, 15)
 d <- data.frame(x=x, y=y, l=l)
 ggplot(d, aes(x=x, y=y)) + geom_point() + facet_wrap(~l, scales="free_x") + 
   theme(axis.text.x=element_text(angle=90, hjust=1))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在这里的评论中,Andrie建议可以手动完成,grid但我不知道如何开始.

r ggplot2 facet-wrap

42
推荐指数
1
解决办法
7403
查看次数

删除facet_wrap图中的"浮动"轴标签?

使用ggplot2中的facet_wrap创建一个网格,但是我的面板数量不均匀,所以最后一行是不完整的.在最后一个底部,空白面板是轴刻度和文本.是否可以将此轴向上移动(为每列中的最后一个面提供应用free_x的外观)?如果没有,我可以完全删除它,如下所示?

为了澄清一些例子,这就是我得到的:http: //sape.inf.usi.ch/sites/default/files/ggplot2-facet-wrap.png

在此输入图像描述

我希望在这里看到的东西(尽管理想情况下,在第4列的刻面上有轴标记): 在ggplot2中将facet标签更改为数学公式

在此输入图像描述

感谢您的任何想法或见解!

r ggplot2

15
推荐指数
1
解决办法
1799
查看次数

消除一个轴上的strip.background(ggplot2)

ggplot2中的许多主题元素只有.x或.y扩展名,只能在一个轴上删除/修改某些内容. strip.background没有strip.background.x相同的,如下所示.

如何strip.background仅从一个轴上删除文本和构面标签?

a <- ggplot(mtcars, aes(mpg, hp)) +
    geom_point() +
    facet_grid(cyl~gear) 

a + theme(strip.text.y = element_blank(), 
    strip.background.x = element_blank())

##     > a + theme(strip.text.y = element_blank(), strip.background.x = element_blank())
##     Error in (function (el, elname)  : 
##       "strip.background.x" is not a valid theme element name.
Run Code Online (Sandbox Code Playgroud)

r ggplot2

13
推荐指数
3
解决办法
2048
查看次数

R:ggplot2:facet_grid:如何在少数(不是全部)标签中包含数学表达式?

我遇到了困难ggplot2.我阅读了大部分相关帖子,尝试了一些但没有找到任何真正的解决方案.

我想在我的标签数学表达式facet_grids用ggplot2.

  • 在原始文件中,我不能写名称μg.L-1
  • 在标题和轴中我可以做到,例如 qplot(day, activity, data=a) +xlab(expression("100 µg "*.L^"-1"*""))::这很好用.
  • 我该如何处理facet_labels?我可以设置级别并重命名标签因子,但不考虑表达式,例如:

    levels(a$group) <- c("control", expression("100 µg "*.L^"-1"*""))

    qplot(…, facets=~group)

结果:

方面1的标签写在图表上:控制

方面2的标签写在图表上:"100μg" .L ^" - 1" ""......

我不希望这样.

我不想使用,facet_grid(.~group, labeller=label_bquote(…))因为我不希望我的所有标签都遵循相同的表达方式.我想手动逐个编辑标签...我尝试用bquote(…)而不是expression(…)但同样的坏结果发生了

有人对此有任何线索吗?


一个例子:我定义了一个数据帧:

activity<- as.numeric(c("44","41","48","43","42","45","44","39", "47", "68", "88", "57"))
group<-c("first","first","first","first","first","first",
         "second","second","second","second","second","second")
day<- c("0", "0", "0", "20","20", "20","0", "0", "0", "20","20", "20" )
a<-data.frame(activity, group, day)
Run Code Online (Sandbox Code Playgroud)

我的情节:

require (ggplot2) 
Run Code Online (Sandbox Code Playgroud)

qplot(day, activity, facets=.~group, data=a, ylim=c(25,90))

在此输入图像描述

我想更改构面标签和y轴的名称:

levels(a$group)<- c("control", …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 facet-grid

10
推荐指数
2
解决办法
4380
查看次数

如何在facet_wrap中为标签添加表达式?

我有一个数据集,我想从中绘制小的倍数,特别是在2乘2的数组中,如下所示:

mydf <- data.frame(letter = factor(rep(c("A", "B", "C", "D"), each = 20)), x = rnorm(80), y = rnorm(80))
ggplot(mydf, aes(x = x, y = y)) + geom_smooth(method = "lm") + geom_point() + facet_wrap(~ letter, ncol = 2)
Run Code Online (Sandbox Code Playgroud)

但是,我希望每个构面标签都包含一个表达式,例如

expression(paste("A or ", alpha))
Run Code Online (Sandbox Code Playgroud)

我可以使用facet_grid()via 来实现这一点

f_names <- list('A' = expression(paste("A or ", alpha)), 'B' = expression(paste("B or ", beta)), 'C' = expression(paste("C or ", gamma)), 'D' = expression(paste("D or ", delta)))
f_labeller <- function(variable, value){return(f_names[value])}
ggplot(mydf, aes(x = x, …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

9
推荐指数
1
解决办法
6514
查看次数

ggplot2:如何获得facet_grid()的labeller = label_both和facet_wrap()的ncol选项的合并功能?

我正在使用ggplot2创建一个boxplot.我能够成功创建boxplot但是在ggplot2中将两个要素与facet合并时遇到问题:

>tmpdf

    value  treat FoldChange Gene Pvalue.Adj
 523.8589 Normal     -1.899    A    0.02828
 489.7638 Normal     -1.899    A    0.02828
 642.0126 Cancer     -1.899    A    0.02828
 928.8136 Cancer     -1.899    A    0.02828
 624.7892 Normal     -1.899    A    0.02828
  53.8685 Normal     -7.135    B    0.00012
 184.6473 Normal     -7.135    B    0.00012
  76.2712 Cancer     -7.135    B    0.00012
  48.0607 Cancer     -7.135    B    0.00012
 177.9528 Normal     -7.135    B    0.00012
4581.2847 Normal     -1.886    C    0.04924
7711.3411 Normal     -1.886    C    0.04924
6007.9852 Cancer     -1.886    C    0.04924
5940.9232 Cancer     -1.886    C    0.04924
4433.0949 Normal     -1.886 …
Run Code Online (Sandbox Code Playgroud)

r facet ggplot2 r-grid

9
推荐指数
1
解决办法
2079
查看次数

ggplot2:使用gtable将条带标签移动到facet_grid的面板顶部

我正在创建一个图形facet_grid,用于在y轴上分割一个分类变量.我决定不使用,facet_wrap因为我需要space = 'free'和labeller = label_parsed.我的标签很长,右边有一个图例,所以我想将标签从面板右侧移动到面板顶部.

这是一个显示我陷入困境的例子.

library(ggplot2)
library(gtable)

mt <- ggplot(mpg, aes(x = cty, y = model)) + geom_point() +
  facet_grid(manufacturer ~ ., scales = 'free', space = 'free') +
  theme_minimal() +
  theme(panel.margin = unit(0.5, 'lines'), strip.text.y = element_text(angle = 0))
Run Code Online (Sandbox Code Playgroud)

mt.png

现在我想将条带文本从每个面板的右侧移动到每个面板的顶部.我可以存储条带标签的凹槽并将其从图中删除:

grob <- ggplotGrob(mt)
strips.y <- gtable_filter(grob, 'strip-right')
grob2 <- grob[,-5]
Run Code Online (Sandbox Code Playgroud)

但是现在我被困在rbind了 - 然后回到平板上,所以标签就到了面板的顶部.

另一种可能的解决方案是使用facet_wrap,然后重新大小的面板作为另一个问题讨论,但在这种情况下,我必须手动更改标签上的面,因为没有labeller = label_parsed了facet_wrap.

我对这两种方法的建议表示赞赏!

谢谢阅读,

汤姆

r facet ggplot2 gtable

8
推荐指数
1
解决办法
2421
查看次数

在 ggplot 2 2.0 中向 facet labeller 添加表达式

我需要用复杂的表达式替换一个 facet wrap 标签。但是,我无法再使用函数facet_wrap_labeller处理在较旧的 ggplot2 版本下创建的绘图。

        data <- as.data.frame(matrix(rnorm(60),20,3)) 
        data$factor <- c(rep("f1", 4),rep("f2", 4), rep("f3", 4), rep("f4",4),rep("f5", 4))
        names(data) <- c("A", "B", "C", "factor")
        melted <- melt(data)

        p <- ggplot(melted, aes(variable, value)) +
             stat_boxplot(geom ='errorbar') + 
             geom_boxplot()
        p1 <- p + facet_wrap(~factor)
        facet_wrap_labeller(p1, labels=c("A", "B", expression({}^2*italic(D)~textstyle(group("(", rarefied, ")")))))
Run Code Online (Sandbox Code Playgroud)

我得到:

Error in getGrob(gg[[strips[ii]]], "strip.text", grep = TRUE, global = TRUE) : 
  it is only valid to get a child from a "gTree"
Called from: getGrob(gg[[strips[ii]]], "strip.text", grep = TRUE, …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

7
推荐指数
1
解决办法
2460
查看次数

如何使用网格编辑ggplot2对象以将数学表达式添加到构面标签?

我需要使用ggplot2中的facet_wrap()将希腊字母放入facet标签中.我发现了一个描述facet_grid()的链接.我使用以下代码将其应用于我的数据:

levels(parameters) <- c(expression(alpha), expression(beta))  
p + facet_grid(.~parameters, labeller = label_parsed)
Run Code Online (Sandbox Code Playgroud)

这很有效,完全符合我的要求.但是,我需要使用facet_wrap()(为两个参数获取单独的y轴,并在不同的列和行中绘制更多参数).我尝试了以下方法:

p + facet_wrap(.~parameters, labeller = label_parsed)  ,  or  
p + facet_wrap(.~parameters)
Run Code Online (Sandbox Code Playgroud)

但是这没有用,因为facet_wrap中没有"贴标机"功能.如何使用网格完成?

r ggplot2 r-grid

6
推荐指数
1
解决办法
2720
查看次数

ggplot2中facet_grid的label_parsed与空格和表达式混合

我想绘制一个图形来自定义带有表达式和普通字符串(包含空格)的条形文本,但当普通文本包含空格时出现错误。这是重现我的问题的示例:

library(ggplot2)
labels <- c("'FT'[1]*' - Ctrl'", 
        "'FT'[tot]*' - FT'[1]*''",
        "'FT'[tot]*' - Ctrl'")
lbl_pd <- data.frame(impact = c('Direct impact', 'Direct impact', 
            'Indirect impact', 'Indirect impact'),
        type = c(labels[1], labels[2], labels[1], labels[2]),
        Latitude = -22.5, Longitude = 115,
        label = c('a', 'b', 'c', 'd'))
p <- ggplot(lbl_pd)
p <- p + geom_text(aes(Longitude, Latitude, label = label), size = 2)

p <- p + facet_grid(type~impact, labeller = label_parsed)
p
Run Code Online (Sandbox Code Playgroud)

错误是

Error in parse(text = x) : <text>:1:8: unexpected symbol
1: Direct impact …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

6
推荐指数
2
解决办法
6325
查看次数

在 ggplot2 中的 facet_wrap 上使用公式

我试图用表达式替换条形图facet_wrap上的标题ggplot,但我没有运气。我在这里和这里都试过,但似乎都不适合我。

整个数据集相当大,所以这里有一些虚拟数据来说明问题。

library(tidyr)
library(ggplot2)

    data<-data.frame(species = rep(c("oak", "elm", "ash"), each = 5),
resp_1 = (runif(15, 1,100)),
resp_2 = (runif(15, 1,100)),
resp_3 = (runif(15, 1,100)),
resp_4 = (runif(15, 1,100)),
resp_5 = (runif(15, 1,100)))

### transform to longform with tidyr

data_2 <- gather(data, response, result, resp_1:resp_5, factor_key=TRUE)

### plot with ggplot2

ggplot(data_2, aes(x = species, y = result, fill = species))+
  geom_bar(stat = 'sum')+
  facet_wrap(~ response)

### here are the labels I'd like to …
Run Code Online (Sandbox Code Playgroud)

label r ggplot2 facet-wrap

3
推荐指数
1
解决办法
56
查看次数

标签 统计

ggplot2 ×11

r ×11

facet ×2

facet-wrap ×2

r-grid ×2

facet-grid ×1

gtable ×1

label ×1