标签: cowplot

R分配ggplot对象以循环列出

我正在使用 afor loop将 ggplots 分配给 a list,然后将其传递给plot_grid()(package cowplot)。plot_grid将多个 ggplots 并排放置在一个图中。这手动工作正常,但是当我使用 a 时for loop,生成的最后一个图在图的每个子帧中重复(如下所示)。换句话说,所有子帧都显示相同的 ggplot。

这是一个玩具示例:

require(cowplot)

dfrm <- data.frame(A=1:10, B=10:1)

v <- c("A","B")
dfmsize <- nrow(dfrm)
myplots <- vector("list",2)

count = 1
for(i in v){
    myplots[[count]] <- ggplot(dfrm, aes(x=1:dfmsize, y=dfrm[,i])) + geom_point() + labs(y=i)
    count = count +1
}
plot_grid(plotlist=myplots)
Run Code Online (Sandbox Code Playgroud)

预期图:

在此处输入图片说明

图自for loop

在此处输入图片说明

我尝试将列表元素转换为 grobs,如本问题所述,如下所示:

mygrobs <- lapply(myplots, ggplotGrob)
plot_grid(plotlist=mygrobs)
Run Code Online (Sandbox Code Playgroud)

但我得到了同样的结果。

我认为问题在于循环分配,而不是plot_grid(),但我看不出我做错了什么。

loops r ggplot2 cowplot

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

格式 ggplot 字体大小以在纸上打印

我的目标是在 R 中生成绘图,以便它可以很好地打印在信纸上。下面是我的例子:

library(cowplot)

sample_df <- data.frame(col_1=c(1,2,3), col_2=c(6,7,8))
plot_1 <-ggplot(data=sample_df, aes(x = col_1, y =col_2, group=1))+
  geom_line()+ggtitle('Title 1')
plot_2 <-ggplot(data=sample_df, aes(x = col_1, y =col_2, group=1))+
  geom_line()+ggtitle('Title 2')

width_letter = 6
height_letter = width_letter*8.5/11

pdf('outpdf_1.pdf', width=width_letter, height=height_letter)
plot_grid(plot_1, plot_2, labels = "AUTO", ncol = 2, align = 'v', scale = 0.65) +   
  theme(plot.margin = unit(c(2,2,2,2), "cm")) 

dev.off()
Run Code Online (Sandbox Code Playgroud)

它生成丑陋的情节,我似乎无法找到一种很好地格式化情节的方法,即调整轴和字体的大小。有什么建议?图片

printing formatting plot r cowplot

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

结合 purrr 和 copplot 来制作绘图网格

ggplot2我已经使用创建了一个数字列表列purrr,现在我想使用将cowplot::plot_grid()它们组合成一个图。我怎样才能做到这一点?有一种蛮力方法可以做到这一点,但是当我事先不知道列表列中有多少元素时,这可能不起作用。

### libraries needed
library(tidyverse)
# install.packages("devtools")
devtools::install_github("IndrajeetPatil/ggstatsplot")

### creating list column with plots
plots <- datasets::mtcars %>%
  dplyr::mutate(.data = ., cyl2 = cyl) %>%
  dplyr::group_by(.data = ., cyl) %>%
  tidyr::nest(data = .) %>%
  dplyr::mutate(
    .data = .,
    plot = data %>%
      purrr::map(
        .x = .,
        .f = ~ ggstatsplot::ggbetweenstats(
          data = .,
          x = am,
          y = mpg,
          title = as.character(.$cyl2)
        )
      )
  )
#> Warning:  aesthetic `x` was not a factor; …
Run Code Online (Sandbox Code Playgroud)

r cowplot purrr tidyverse

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

将绘图与 R 网格中的 Cowplot 对齐

我有一个关于 Cowplot 中的情节对齐的问题。

我想在由 3 列组成的面板中对齐图 (ggplot)。第一列有 2 个图(垂直对齐),第二列有 1 个图,第三列也有两个图(垂直对齐)。

例子:

# Packages
library(tidyverse)
library(cowplot)

# Create sample data
df <- data.frame(replicate(2,sample(0:10,10,rep=TRUE)))

# Create sample plots
plot.a1 <- ggplot(df, aes(x=df$X1, y=df$X2)) +
  geom_point()

plot.a2 <- plot.a1
plot.a <- plot_grid(plot.a1, plot.a2, align = "v", ncol = 1, nrow = 2)

plot.b <- plot.a1

plot.c1 <- plot.a1
plot.c2 <- plot.a1
plot.c <- plot_grid(plot.c1, plot.c2, align = "v", ncol = 1, nrow = 2)

# Create panel figure
plot_grid(plot.a, plot.b, plot.c, labels …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 cowplot

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

插入图像/PNG ggplot2 - Cowplot

我正在尝试使用cowplot包的draw_image()功能。我已经设法在图表中获取图像作为示例。

我无法弄清楚 xy 位置是如何工作的,我必须不断输入随机数,直到看到图像。

require(ggplot2) #required packages
require(cowplot)
require(magick)

p1 <- qplot(Sepal.Length, Sepal.Width, data = iris)

ggdraw(p1) +      
  draw_image(
    "https://upload.wikimedia.org/wikipedia/en/7/77/EricCartman.png",
    y = 0.2,
    scale = 0.5
  )
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议他们的运作规模如何?它看起来确实与图表的比例不同。

r ggplot2 cowplot

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

如何向多个 ggplot 图表添加标签(A、B、C)

阴谋我试图将标签 A、B 和 C 添加到每个图表的左上角。我已经尝试过cowplot::draw_plot_label(),但似乎没有任何效果。有人可以帮忙吗?

这些 A、B 和 C 标签并不是每个图的主标题。

# Packages
library(ggplot2)
library(gridExtra)
library(cowplot)

# 1st plot
p1 <- ggplot(data = new_data %>% 
               filter(Species =="Sharksucker_Remora")) +
  scale_colour_manual(values=c(Sharksucker_Remora="black"), labels = c("Sharksucker Remora")) + 
  geom_line(mapping = aes(x = Date, y = Proportion, group = Species, colour = Species)) + 
  xlab("") + 
  ylab("Proportion") + 
  theme(legend.position="top") +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1)) + labs(colour = ~italic(M.alfredi)~"Hitchhiker Species:") +
  theme(legend.key=element_blank())

# 2nd plot
p2 <- ggplot(data …
Run Code Online (Sandbox Code Playgroud)

label r ggplot2 gridextra cowplot

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

如何使用plot_grid自定义边距和标签设置?

我想不删除标题,并从该图表中删除轴标签,该图表是我从cowplot用plot_grid生成的。在此处输入图片说明

这是我的代码

    data(mtcars)
 library(ggplot2)
 library(cowplot)
 mpg = ggplot() +
 geom_boxplot(aes(y = mpg,x = as.factor(cyl)),data=mtcars) +
 coord_flip()
 am=ggplot() +
 geom_boxplot(aes(y = mpg,x = as.factor(am)),data=mtcars) +
 coord_flip()
 vs=ggplot() +
 geom_boxplot(aes(y = mpg,x = as.factor(vs)),data=mtcars) +
 coord_flip()
 gear = ggplot() +
 geom_boxplot(aes(y = mpg,x = as.factor(gear)),data=mtcars) +
 coord_flip()
 p=plot_grid(mpg,am,vs,gear, labels = "Variables effecting Mileage", label_size = 14, hjust = -0.5,
 + vjust = 0.5)+theme_grey()
p
Run Code Online (Sandbox Code Playgroud)

此外,如果不使用Cowplot来创建它会更简单,那么您有何建议?

r ggplot2 boxplot cowplot

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

如何与牛图的 plot_grid 一起使用

我想将几个 ggplot2 图表组合成一个使用cowplot::plot_grid(). 从它的文档:

?plot
Arguments

... 
List of plots to be arranged into the grid. The plots can be objects of one of the following classes: ggplot, recordedplot, gtable, or alternative can be a function creating a plot when called (see examples).
Run Code Online (Sandbox Code Playgroud)

所以,如果我输入一个 ggplot2 对象列表 plot_grid(),它应该将这些图合并为一个,对吗?

那么为什么这行不通呢?

p1 <- ggplot(mpg, aes(x = cty, y = hwy, colour = factor(cyl))) + 
  geom_point(size=2.5) 
p2 <- ggplot(diamonds, aes(clarity, fill = cut)) + geom_bar() +
  theme(axis.text.x = element_text(angle=70, vjust=0.5))

list(p1, …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 cowplot purrr

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

R,为什么cowplotplot_grid()并排生成小图片?

我正在尝试使用 R 中的owplot包并排放置一些图。

这是我得到的(非常糟糕的)结果: 在此输入图像描述

正如您所看到的,这张图像充满了麻烦:图太小、文本字体太大、留有太多空白。

我能够正确生成并保存这三个图,但是当我运行以下命令时,我得到了灾难图像:

general_plot <- plot_grid(plot_cf, plot_pos_neg, plot_scores, ncol = 2, align="h", labels=c("A", "B", "C"), label_size=5)
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

这是我的完整代码(准备运行):

#!/usr/bin/env Rscript

if (!require("RColorBrewer")) {
  install.packages("RColorBrewer")
  library(RColorBrewer)
}

library(grid)
library(gridExtra)
library(gtable)
library(ggplot2)
library(cowplot)

SAVE_FILES = FALSE

digits = 2

generalTextSize = 5

# Confusion matrix barplot
barplot_creator <- function(inputText, saveFileName, upperYlim) {

    confusionMatrixDataFrame <- read.table(header=TRUE, text=inputText)

    confusionMatrixDataFrame$category = gsub("_", " ", confusionMatrixDataFrame$category)
    confusionMatrixDataFrame$category = factor(confusionMatrixDataFrame$category, levels=unique(confusionMatrixDataFrame$category))


    p <- ggplot(confusionMatrixDataFrame, aes(x=category, y=amount)) + geom_bar(aes(fill=category), stat="identity", position=position_dodge()) + ylim(0,upperYlim)
    p + …
Run Code Online (Sandbox Code Playgroud)

plot r ggplot2 cowplot

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

Cowplot 包:如何在 R 中使用 plot_grid() 将许多图排列成一个图后垂直向下对齐图例

概述:

我使用下面R 代码制作了一系列地图,并使用Cowplot 包中的 plot_grid()使用下面称为“QuercusRobur1”“QuercusRobur2”的数据框将图排列到一个绘图窗口上。

情节看起来非常好;然而,每个地块的图例都没有对齐,看起来不整齐。

有谁知道如何使用 plot_grid 在新的绘图排列中垂直向下对齐这些图例?

如果有人可以提供帮助,我将不胜感激

代码

##Import Packages
    library(ggplot2)
    library(maps)
    library(mapdata)
    library(tidyverse)

 ##Get a map of the UK from maps:
        UK <- map_data(map = "world", region = "UK")
        head(UK)
        dim(UK)

        ##Produce point data

        MapUK<-ggplot(data = UK, aes(x = long, y = lat, group = group)) + 
                   geom_polygon() +
                   coord_map()

        ##head
        head(QuercusRobur1)
        head(QuercusRobur2)

        ##Remove weird data points
        QuercusRobur1<-QuercusRobur1%>%filter(Longitude<=3)

        ##Observation 1

        p1 <- ggplot(QuercusRobur1,
                    aes(x = Longitude, …
Run Code Online (Sandbox Code Playgroud)

maps r legend ggplot2 cowplot

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

标签 统计

cowplot ×10

r ×10

ggplot2 ×8

plot ×2

purrr ×2

boxplot ×1

formatting ×1

gridextra ×1

label ×1

legend ×1

loops ×1

maps ×1

printing ×1

tidyverse ×1