标签: cowplot

使用Cowplot套件的多点检测的居中X轴标签

我有一个由2x2配置的4个图组成的多图图。我使用“ cowplot”包安排了地块,并使用下面的代码安排了plot_grid函数

plot_grid(p1, p2, p3, p4, align='vh', vjust=1, scale = 1)
Run Code Online (Sandbox Code Playgroud)

其中p1-p4是我的4个图。产生的图形具有一个x轴标签,该标签与多图中的每一列关联:

在此处输入图片说明

有谁知道我该如何用Cowplot或其他方式编写以多图底部为中心的单个x轴标签的编码?

r ggplot2 cowplot

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

使用牛皮图将x轴切换到顶部时左对齐轴标签

我正在尝试制作一个相关热图,其中x轴使用移动到顶部cowplot::switch_axis_position.我有不同长度的轴标签,我希望标签左对齐(或者更确切地说是底部对齐,因为它们旋转了90度).虽然我设法对齐标签,但它们会远远超出情节.

library(reshape2)
library(ggplot2)
library(cowplot)

# some toy data
set.seed(1)
mydata <- mtcars[, c(1, 3, 4, 5, 6, 7)]

# to show difference in justification better, make names of unequal length 
names(mydata) = paste0(sample(c("mtcars_", ""), 6, replace = TRUE), names(mydata))
cormat <- round(cor(mydata), 2)

melted_cormat <- melt(cormat)
head(melted_cormat)
Run Code Online (Sandbox Code Playgroud)

首先是x轴移动到顶部,标签垂直居中的图:

plot <- ggplot(data = melted_cormat, aes(x=Var1, y=Var2, fill=value)) + 
        geom_tile() +
        theme_bw(base_size=20) + xlab("") + ylab("") +
        theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 0.5))
ggdraw(switch_axis_position(plot, 'x')) …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 cowplot

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

for 循环与 ggplots 生成具有相同值但不同标题的图形

我已经阅读了很多关于使用循环为 ggplot 生成大量图表的帖子,但找不到任何可以解释我的问题的帖子......

我有一个数据框,正在尝试遍历 92 列,为每列创建一个新图形。我想将每个图保存为一个单独的对象。当我运行我的循环(下面的代码)并打印图形时,所有图形都是正确的。但是,当我使用assign() 更改print() 命令时,图形不正确。标题正在发生变化,但图形值都是相同的(它们都是最终图形的值)。我发现了这一点,因为当我使用 plot_grid() 生成 10 个图时,图形标题和轴标签都是正确的,但值是相同的!

我的数据集很大,所以我提供了一个小数据集用于下面的说明。

示例数据名:

library(ggplot)
library(cowplot)
df <- as.data.frame(cbind(group=c(rep("A", 4), rep("B", 4)), a=sample(1:100, 8), b=sample(100:200, 8), c=sample(300:400, 8))) #make data frame
cols <- 2:4 #define columns for plots
for(i in 1:length(cols)){
  df[,cols[i]] <- as.numeric(as.character(df[,cols[i]]))
} #convert columns to numeric
Run Code Online (Sandbox Code Playgroud)

情节:

for (i in 1:length(cols)){
  g <- ggplot(df, aes(x=group, y=df[,cols[i]])) +
    geom_boxplot() +
    ggtitle(colnames(df)[cols[i]])
  print(g)
  assign(colnames(df)[cols[i]], g) #generate an object for each plot
}

plot_grid(a, b, c)
Run Code Online (Sandbox Code Playgroud)

我在想,当 ggplots 绘制绘图时,它只呈现 i …

for-loop r ggplot2 cowplot

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

将共享图例与绘图网格的中心对齐(使用牛皮图)

可重复的示例可以在本教程中找到包牛皮图.

https://cran.r-project.org/web/packages/cowplot/vignettes/shared_legends.html

复制示例代码:

library(ggplot2)
library(cowplot)
#down-sampled diamonds data set
dsamp <- diamonds[sample(nrow(diamonds), 1000), ]

# Make three plots.
# We set left and right margins to 0 to remove unnecessary spacing in the
# final plot arrangement.
p1 <- qplot(carat, price, data=dsamp, colour=clarity) +
  theme(plot.margin = unit(c(6,0,6,0), "pt"))
p2 <- qplot(depth, price, data=dsamp, colour=clarity) +
  theme(plot.margin = unit(c(6,0,6,0), "pt")) + ylab("")
p3 <- qplot(color, price, data=dsamp, colour=clarity) +
  theme(plot.margin = unit(c(6,0,6,0), "pt")) + ylab("")

# arrange the three plots in …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 cowplot

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

如何使用plot_grid放置没有任何空间的地块?

我正在安排2x2地块。这些图共享相同的轴,所以我想将它们放在一起,例如

这段代码:

library(ggplot2)
library(cowplot)

Value <- seq(0,1000, by = 1000/10)
Index <- 0:10
DF <- data.frame(Index, Value)


plot <- ggplot(DF, aes(x = Index, y = Value)) +
  geom_line(linetype = 2) +
  theme(aspect.ratio = 0.5)

plot_grid(plot, plot, plot, plot, align = "hv", ncol = 2)
Run Code Online (Sandbox Code Playgroud)

产生

在此处输入图片说明

但我想要类似的东西:

在此处输入图片说明

如何获得类似的结果?

r ggplot2 r-grid cowplot

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

使用coord_equal()时将不同高度的多面ggplots垂直对齐

我正在尝试coord_equal()使用cowplot::plot_grid()或将两个FACETED ggplot对象组合在一起,egg::ggarrange()并垂直对齐它们。

egg::ggarrange()方法适用于UNFACETED地块,解决方案在此处发布。

但是,egg::ggarrange()当包含构面时,解决方案将失效。这些图已正确对齐,但是y轴的单位是x轴的单位的两倍。关于如何对此进行概括的任何建议?

dat1 <- data.frame(x = rep(1:10, 2), y = 1:20, z = rep(c("A", "B"), 10))
dat2 <- data.frame(x = 1:10, y = 1:10, z = rep(c("A", "B"), 5))
plot1 <- ggplot(dat1, aes(x=x, y=y)) + 
  geom_point() + coord_equal() + facet_wrap(~z)
plot2 <- ggplot(dat2, aes(x=x, y=y)) + 
  geom_point() + coord_equal() + facet_wrap(~z)
egg::ggarrange(plot1, plot2, ncol = 1)
Run Code Online (Sandbox Code Playgroud)

图片1

r ggplot2 gtable cowplot

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

ggplot:对齐多个多面图 - 各个不同尺寸的面

我试图将多个图与方面对齐.我的问题有些微不足道但是很顺利:我可以制作一个绘图,使绘图区域对齐,刻面本身对齐,但刻面条的宽度不一样.如果小平面的标签长度​​不同,则小平面条的大小应使文本可以适合小平面.到目前为止,我无法找到一种方法,在对齐多个图时使所有小平面条具有相同的宽度.

下面是我想要对齐的图表类型的示例以及我对齐它们的努力:

library(data.table)
library(ggplot2)
library(foreach)
library(stringr)
library(cowplot)

# example data to show how aligning faceted plots is not quite right
plotvars = c(paste0("plot1_var", 1:7), paste0("plot2_var",1:5), paste0("plot3_var",1:10))
data = 
  foreach(p=plotvars,.combine = "rbind") %do% {
    d = data.table(plot = rep(str_extract(p,pattern = "plot[[:digit:]]"),2),
               plot_variables = rep(p,2),
               fill_categories = c("fill1","fill2"),
               number = sample(1:1000, size = 2))
    d[, facet_variables := ifelse(plot=="plot1", 
                                  rep(sample(paste0("facet",1:3),size=1),2),
                                  ifelse(plot=="plot2",
                                         rep(sample(paste0("facet_title",1:3),size=1),2),
                                         ifelse(plot=="plot3",
                                                rep(sample(paste0("facet_title_longer",1:3),size=1),2),
                                                NA)))]
    d
  }

# function to make stacked barplots with facets + coord_flip
make_plot = function(data, plot_var) {
  ggplot(data[plot==plot_var], …
Run Code Online (Sandbox Code Playgroud)

r data-visualization ggplot2 gridextra cowplot

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

ggplot2 - 将奇数个图正确排列成一个图形

我有奇数个图可以排列成一个图形,我希望显示以图形最后一行为中心的最后一个图。

这里有一些示例数据:

library(ggplot2)
set.seed(99)

x_1 = data.frame(z = rnorm(100))
x_2 = data.frame(z = rnorm(100))
x_3 = data.frame(z = rnorm(100))

lst = list(x_1, x_2, x_3)

lst_p = list()

for (i in 1:length(lst)) {
    lst_p[[i]] = ggplot(data=lst[[i]], aes(lst[[i]]$z)) + 
    geom_histogram() +
        xlab("X LAB") +
        ylab("Y LAB") 
}

p_no_labels = lapply(lst_p, function(x) x + xlab("") + ylab(""))

title = cowplot::ggdraw() + cowplot::draw_label("test", size = 20)

p_grid = cowplot::plot_grid(plotlist = p_no_labels, ncol = 2)

print(cowplot::plot_grid(title, p_grid, 
                         ncol = 1, rel_heights = c(0.05, 1, 0.05))) …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 cowplot

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

R - cowplot:使用 plot_grid 排列 png 图像和 ggplot

我正在尝试使用plot_grid来自 cowplot 包并排排列 png 图像和 ggplot 对象:

library(cowplot)
library(tableHTML)

sg <- data.frame(start = c(0,5,10), 
                 end = c(10,20,30),
                 duration = c(10,15,20), 
                 row.names = c("A","B","C"))

p1 <- ggplot(sg)+
  geom_segment(aes(x=start, y=row_number(start), xend=end, yend=row_number(start)), 
               size = 3) +
  scale_y_reverse(labels = NULL) +
  labs(y = "", x = "") +
  theme(aspect.ratio = 1/5)

sg %>%
  tableHTML() %>%
  add_theme("scientific") %>%
  tableHTML_to_image(file = "image2.png", zoom = 2)

p2 <- ggdraw() + draw_image("image2.png", scale = 0.7)

plot_grid(p2, p1, ncol = 2, scale = c(0.9,1), rel_widths = …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 cowplot

5
推荐指数
0
解决办法
911
查看次数

将多面 ggplots (facet_wrap) 与 R 中的牛图对齐

我想对齐两个面板图,其中的一个产生facet_wrapggplot以下方式(注:A组需要留空):

在此处输入图片说明

但是,我注意到面板 B 的 y 轴与从最后一个到面板 C 的绘图的 y 轴不完全对齐(尽管axis = 'lb'在两个方面都有选项)。

代码

# Load libraries
library(tidyverse)
library(cowplot)

# Create two facetted plots 
p1 <- ggplot(data = diamonds, aes(x = carat, y = price)) +
  facet_wrap(~ cut, scales = "free_y", ncol = 5) +
  geom_point(size=0.5)

p2<- ggplot(data = filter(diamonds, price < 900 & (cut == "Fair" | cut == "Good" )), aes(x = carat, y = price)) +
  facet_wrap(~ cut, scales = "free_y", ncol …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 cowplot

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

标签 统计

cowplot ×10

ggplot2 ×10

r ×10

data-visualization ×1

for-loop ×1

gridextra ×1

gtable ×1

r-grid ×1