📜  R中cowplot网格的共享图例

📅  最后修改于: 2022-05-13 01:54:45.284000             🧑  作者: Mango

R中cowplot网格的共享图例

在本文中,我们将讨论如何在 R 编程语言中使用共享图例创建牛图网格。

首先,我们将制作一个基本的牛图网格,其中两个图分别有自己的图例。为此,使用 R 语言中的 cowplot 网格包,我们使用 plot_grid()函数并将网格中我们需要的所有图作为参数传递。

例子:

一个基本的cowplot 网格,其中包含两个具有单独图例的图。

R
# Create sample data                           
sample_data <- data.frame(
  name = c("Geek1","Geek2","Geek3",
           "Geek4","Geeek5") ,
  value=c(31,12,15,28,45))
  
# Load ggplot2 and cowplot
library("ggplot2") 
library("cowplot")
  
# Create both plot and store in variable
plot1<-ggplot(sample_data, aes(x=name, y=value, fill=name)) +
        geom_bar(stat = "identity")
  
plot2<-ggplot(sample_data, aes(x="", y=value, fill=name))+
        geom_bar(width = 1, stat = "identity") +
        coord_polar("y", start=0)
  
# plot_grid() function adds both plots in a cowplot grid
plot_grid(plot1, plot2)


R
# Create sample data                           
sample_data <- data.frame(
  name = c("Geek1","Geek2","Geek3",
           "Geek4","Geeek5") ,
  value=c(31,12,15,28,45))
  
# Load ggplot2 and cowplot
library("ggplot2") 
library("cowplot")
  
# Create both plot without legend and store in variable
plot1<-ggplot(sample_data, aes(x=name, y=value, fill=name)) +
        geom_bar(stat = "identity")+
        theme(legend.position = "none")
  
plot2<-ggplot(sample_data, aes(x="", y=value, fill=name))+
        geom_bar(width = 1, stat = "identity") +
        coord_polar("y", start=0)+
        theme(legend.position = "none")
  
# combine both plot using plot_grid()
combined_plot<-plot_grid(plot1, plot2,ncol=2)
  
# extract legend from plot1
legend <- get_legend(
  plot1 +
    guides(color = guide_legend(nrow = 1)) +
    theme(legend.position = "bottom")
)
  
# Combine combined plot and legend using plot_grid()
plot_grid(combined_plot, legend,ncol=1,rel_heights = c(1, .1))


输出:

共享传奇牛图网格

要创建具有共享图例的牛图网格,没有内置方法,但可以通过以下步骤实现功能:

第 1 步:使用以下方法创建要放入网格中的图,而不使用图例:

plot + theme(legend.position = "none")

第 2 步:现在使用 plot_grid()函数合并两个图并将其存储在变量中:

combined_plot<-plot_grid(plot1, plot2, ...... ncol)

第 3 步:现在我们从上述图表之一中提取图例,将其放入组合图中,使用:

legend <- get_legend( plot1 )

第 4 步:最后使用 plot_grid函数将组合图与派生图例组合,以获得共享图例图的所需外观。

plot_grid(combined_plot, legend, ncol)

例子:

在这里,是上述方法的实现,以获取具有共享图例的牛图网格。

R

# Create sample data                           
sample_data <- data.frame(
  name = c("Geek1","Geek2","Geek3",
           "Geek4","Geeek5") ,
  value=c(31,12,15,28,45))
  
# Load ggplot2 and cowplot
library("ggplot2") 
library("cowplot")
  
# Create both plot without legend and store in variable
plot1<-ggplot(sample_data, aes(x=name, y=value, fill=name)) +
        geom_bar(stat = "identity")+
        theme(legend.position = "none")
  
plot2<-ggplot(sample_data, aes(x="", y=value, fill=name))+
        geom_bar(width = 1, stat = "identity") +
        coord_polar("y", start=0)+
        theme(legend.position = "none")
  
# combine both plot using plot_grid()
combined_plot<-plot_grid(plot1, plot2,ncol=2)
  
# extract legend from plot1
legend <- get_legend(
  plot1 +
    guides(color = guide_legend(nrow = 1)) +
    theme(legend.position = "bottom")
)
  
# Combine combined plot and legend using plot_grid()
plot_grid(combined_plot, legend,ncol=1,rel_heights = c(1, .1))

输出: