相关疑难解决方法(0)

反ggplotGrob?

我有一个函数来操作ggplot对象,通过将其转换为grob然后修改图层.我希望函数返回一个ggplot对象而不是grob.有没有一种简单的方法将grob转换回gg?

该文档ggplotGrob是非常稀疏.
简单的例子:

P <- ggplot(iris) + geom_bar(aes(x=Species, y=Petal.Width), stat="identity")

G <- ggplotGrob(P)
... some manipulation to G ...

## DESIRED: 
P2 <- inverse_of_ggplotGrob(G)

such that, we can continue to use basic ggplot syntax, ie
`P2 + ylab ("The Width of the Petal")`
Run Code Online (Sandbox Code Playgroud)

更新:

要回答评论中的问题,这里的动机是根据每个方面中标签名称的值,以编程方式修改构面标签的颜色.以下功能很好地工作(基于前一个问题中的baptise输入).

我希望返回值colorByGroup是一个ggplot对象,而不仅仅是一个grob.

这是代码,对于那些感兴趣的人

get_grob_strips <- function(G, strips=grep(pattern="strip.*", G$layout$name)) {

  if (inherits(G, "gg"))
    G <- ggplotGrob(G)
  if (!inherits(G, "gtable"))
    stop ("G must be a gtable object or a gg object")

  strip.type <- …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 grob

49
推荐指数
2
解决办法
2727
查看次数

在 ggplot2 中的刻面之间添加彩色边框

我希望在每个刻面之间添加一个厚厚的深灰色条。我不想在每个方面周围都有边框,而是在图之间有一个深灰色条。

library(ggplot2)

ggplot(mpg, aes(cty, hwy, color = factor(year))) + 
  geom_point() +
  facet_wrap(~ cyl, nrow = 1) 
Run Code Online (Sandbox Code Playgroud)

尽管我的数据与上面的示例相同,但我发现了这个问题,只有一行而不是facet_grid.

r ggplot2

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

ggplot 在因子水平之间插入线

我正在 ggplot 中制作一个 tilemap,如下所示。2个问题:

1) 如何扩展 x 轴限制以在 x = 4 处标记我的组?2) 如何自动在组之间放置水平线(即 1 和 2、2 和 3 之间的线,等等),而不是手动指定 y 值?

require(tidyverse)
set.seed(1)
df <- data.frame(ID = as.character(c(1:50)),
                 Group = sample(1:8, 50, replace = T),
                 var1 = sample(c('Y', 'N'), 50, replace = T),
                 var2 = sample(c('Y', 'N'), 50, replace = T),
                 var3 = sample(c('Y', 'N'), 50, replace = T)) %>% 
  gather('var', 'y_n', var1:var3) %>% 
  arrange(-Group) %>% 
  mutate(ID = factor(ID, levels = unique(ID, ordered = T)))

ggplot(df, aes(var, ID, label = …
Run Code Online (Sandbox Code Playgroud)

r factors ggplot2

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

标签 统计

ggplot2 ×3

r ×3

factors ×1

grob ×1