相关疑难解决方法(0)

`ggplotGrob`是如何工作的?

docs.ggplot2.org目前提供的功能文档非常少ggplotGrob.在洛桑联邦理工学院的网站是一点点更多的信息,但它仍然不是非常有帮助.

您能否提供一个关于该功能可以做什么的简短教程ggplotGrob

r ggplot2

17
推荐指数
1
解决办法
7071
查看次数

ggplot2跨越组中的嵌套构面

我遇到了一种情况,我希望创建一个由三个分组变量构成的图.要做到这一点,我会简单地使用facet_grid(f1 ~ f2 + f3),但问题是f2的标签是多余的,并且让它们跨越f3嵌套的f3的方面会更好.

MWE:

library('tibble')
library('ggplot2')
df <- tribble(
  ~x, ~y, ~f1, ~f2, ~f3,
  0.5, 0.5, "a", "a", "a",
  0.5, 0.5, "b", "a", "a",
  0.5, 0.5, "a", "b", "a",
  0.5, 0.5, "b", "b", "a",
  0.5, 0.5, "a", "a", "b",
  0.5, 0.5, "b", "a", "b",
  0.5, 0.5, "a", "b", "b",
  0.5, 0.5, "b", "b", "b"
)


p <- ggplot(df, aes(x = x, y = y)) +
  geom_point() +
  facet_grid(f1 ~ f2 + f3)
Run Code Online (Sandbox Code Playgroud)

嵌套小平面图的MWE

同样,我希望将f2的标签组合在一起,这样它们就不那么多余了.

编辑:这与其他问题的不同之处在于,它询问如何使用现有分组修改构面而不是添加新构图.

r facet ggplot2

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

在ggplot2图中添加辅助y轴 - 使其完美

添加辅助y轴,缩放原始y轴之一.这个话题并不新鲜.它已被触及时间,例如在这个ggplot2 google groups线程上.继哈德利的意见,我试图通过添加辅助y轴geom_vline,geom_segmentgeom_text.但是,它仍然很难看.

所以我会请求你帮助完善它.我想很多ggplot2用户会对这个主题感兴趣并且更喜欢你的专业知识或贡献.提前致谢.

#########################################
# what I have gotten.
library(ggplot2)

# build up a box plot
p <- ggplot(mtcars, aes(factor(cyl), mpg)) 

# add the secondary y axis on right side of the plot
p + geom_boxplot() + geom_vline(xintercept = 3.5) + 
 geom_segment(aes(x=3.49, y=c(7,14,21,28), xend = 3.52, yend = c(7,14,21,28))) +
 geom_text(aes(x=3.55, y=c(7,14,21,28), label=c(7,14,21,28)))
Run Code Online (Sandbox Code Playgroud)

plot r ggplot2

12
推荐指数
1
解决办法
1万
查看次数

在ggplot2中添加构面标题和更改图例标题

我想知道如何在ggplot2中添加facet标题

ggplot(diamonds, aes(cut)) + geom_bar() +   facet_grid(color ~ clarity)
Run Code Online (Sandbox Code Playgroud)

并更改图例标题

ggplot(diamonds, aes(cut, fill=cut)) + geom_bar() +   facet_grid(. ~ clarity)
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

r ggplot2

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

是否可以使用ggplot创建多个数据和图像?

我想知道是否可以使用ggplot2创建一个包含图像的多图(如facet):

我想要什么

我不知道如何安排图像数据传递给它们geom_raster()或如何在数据框中包含图像......

我试过的:

> img1 <- readPNG('1.png')
> img2 <- readPNG('2.png')
> img3 <- readPNG('3.png')

> test <- data.frame(c(1,2,3),c(5,2,7),c(img1,img2,img3))
> nrow(test)
 [1] 4343040
Run Code Online (Sandbox Code Playgroud)

我已经有了一个问题,建立一个内部图像的数据框...每3行重复一次(我想每像素一次).

r ggplot2

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

gtable对象的透明度

我正在尝试生成ggplot具有透明背景的对象的png文件.当我直接使用ggplot对象时,panel.background=element_rect(fill = "transparent",colour = NA)我得到了我想要的结果.

我现在正在尝试对绘图进行一些修改(在这样的方面添加标签如何在ggplot2中向facet添加常规标签?)

在绘制修改后的gtable对象时,背景为浅灰色,带有细白线,而不是获得透明背景.

在此输入图像描述

而如果我ggplot直接绘制对象,它确实支持透明度

在此输入图像描述

这是我正在使用的代码:

data <- data.table(a = seq(1,5), b=sample.int(5,50,replace=TRUE), c=rnorm(100))

plotSlices <- function(input, rowfacet, colfacet, metric, label, facetlabels=FALSE){
  calc <- substitute(metric)
  bygroup<-c(rowfacet,colfacet)
  aggregates <- input[,eval(calc),by=bygroup]

  chart <- ggplot(aggregates) + 
    geom_bar(stat="identity") + 
    aes(x="", y=V1, fill=V1>0) + 
    facet_grid(as.formula(sprintf("%s ~ %s", rowfacet, colfacet))) +
    coord_flip() +
    xlab("") +
    ylab(label) +
    theme(legend.position = "none", 
          axis.title=element_text(size=16, color="white"),
          axis.ticks.y=element_blank(),
          panel.grid.major.y=element_blank(),
          panel.grid.major.y=element_line(colour = "grey25"),
          panel.grid.minor.x=element_blank(),
          plot.background=element_rect(fill = "transparent",colour = NA),
          panel.background=element_rect(fill …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 gtable

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

Facets的整体标签

这是一些生成具有两组方面的图形的最小代码.

library("ggplot2", quietly = TRUE, warn.conflicts = FALSE)
library("RColorBrewer", quietly = TRUE, warn.conflicts = FALSE)
val.a <- rnorm(10)
val.b <- rnorm(10)
val.c <- c("A","B","A","A","B","B","B","B","A","B")
val.d <- c("D","D","E","D","E","E","E","D","D","E")
val.e <- rnorm(10)
maya <- data.frame(val.a,val.b,val.c,val.d,val.e)
ggplot(maya, aes(x=val.a, y=val.b)) +
  geom_point(shape=20,size=3, aes(colour=val.e)) +
  facet_grid(val.c~val.d) +
  xlab("Leonardo") + ylab("Michaelangelo") +
  scale_colour_gradientn(colours=brewer.pal(9,"YlGnBu"), name="Splinter")
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何添加整个构面标签,以便名称Donatello和Raphael位于顶部和右侧轴上.

我在SO上看到了一些类似的解决方案,但我无法对代码进行反复无常的研究.请问你能否解答我的难题?

类似的问题在这里,但如果我有两个以上的方面,它就失败了.标签显示在图表内的某处.有没有办法让这个工作适用于一般情况?

所以我在上面的链接上尝试了rawr的解决方案,最终在多个列的同一个地方.这是更新为rawr解决方案的代码,但是它产生了意外的标签(对我来说因为我不理解解决方案).

library("ggplot2", quietly = TRUE, warn.conflicts = FALSE)
library("RColorBrewer", quietly = TRUE, warn.conflicts = FALSE)
val.a <- rnorm(20)
val.b <- rnorm(20)
val.c <- c("A","B","C","D","E","F","G","H","I","J")
val.d <- c("A","B","C","D","E","F","G","H","I","J")
val.e …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 gtable

4
推荐指数
1
解决办法
1362
查看次数

将二级标题添加到facet_wraps

我有一个数据框,由分布在两个位置(即和)的八个站点(即ABC... )组成。我已经为每个站点制作了一个数字,但是,我想添加一个额外的列标题来表示该站点的位置。我怎样才能做到这一点?HNorthSouthfacet_wrap()

示例数据

library(ggplot2)
library(dplyr)

set.seed(123)

df <- data.frame(matrix(ncol = 4, nrow = 24))
colnames(df)[1:4] <- c('location','site','x','y')
df$location <- rep(c('North','North','North','South','South','South'),4)
df$site <- c('A','A','A','E','E','E','B','B','B','F','F','F',
             'C','C','C','G','G','G','D','D','D','H','H','H')
df$x <- rep(seq(0,12,4),6)
df$y <- rnorm(24,50,20)
df
Run Code Online (Sandbox Code Playgroud)

示例图(缺少辅助标头)

df %>%
  mutate(across(site, factor, levels = c('A','B','E','F',
                                         'C','D','G','H'))) %>%
  ggplot(aes(x = x, y = y)) +
  geom_point() +
  geom_line() +
  scale_x_continuous(breaks = seq(0,12,3),
                     limits = c(0,12)) +
  scale_y_continuous(breaks = seq(0,max(df$y),5)) +
  theme_bw() +
  facet_wrap(~site, nrow = 2)
Run Code Online (Sandbox Code Playgroud)

这是一个类似的问题( …

r ggplot2

4
推荐指数
1
解决办法
210
查看次数

绘图的两个方面的两个单独的y轴标题,同时使用ggplot2保留方面顶部的标签

我有这个数据框:

> str(DF)
'data.frame':   14084 obs. of  6 variables:
.
.
.
 $ Variables: chr  "Height" "Height" "Height" "Height" ...
 $ Values   : num  245 129 301 162 123 125 115 47 46 135 ...
 $ Year     : Factor w/ 2 levels "2015","2016": 1 1 1 1 1 1 1 1 1 1 ...
Run Code Online (Sandbox Code Playgroud)

我使用facet_wrap()自由轴刻度将图分成两个小平面(分为两列)。

ggplot(data = DF, aes(x = Year, y = Values)) +
  geom_boxplot() +
  facet_wrap("Variables", scales = "free")
Run Code Online (Sandbox Code Playgroud)

我的问题是:
两个构面共享一个共同的y轴标题。但是,我想为两个方面提供两个单独的y轴标题。常见的x轴标题对我来说很好。

我碰到了这个问题, 使用带有facet_wrap的ggplot2显示不同的轴标签, 但是它并不能解决我想要的问题,因为我不想失去顶部的切面标签。而且,我的构面是水平排列的。 …

r ggplot2 r-grid

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

标签 统计

ggplot2 ×9

r ×9

gtable ×2

facet ×1

plot ×1

r-grid ×1