R语言 绘制没有图例的ggplot2图例
图中的图例单独描述了绘图的每一部分,用于以图形的形式显示统计数据。在这篇文章中,我们将看到如何在ggplot2中只画图例而不画图。
首先,让我们看看如何画一个带有图例的图,这样就可以看出区别。为此,通过使用 library() 函数加载ggplot2包,并创建一个DataFrame。为了创建一个R图,我们使用 ggplot() 函数,为了得到一个散点图,我们在ggplot()函数中添加 geom_point() 函数。
例子
# Load Package
library("ggplot2")
# Create a DataFrame
data <- data.frame(
Xdata = rnorm(10),
Ydata = rnorm(10),
LegendData = c("ld-01", "ld-02", "ld-03",
"ld-04", "ld-05", "ld-06",
"ld-07", "ld-08", "ld-09",
"ld-10"))
# Create a Scatter Plot and assign it
# to gplot data object
gplot <- ggplot(data, aes(
Xdata, Ydata, color = LegendData)) +
geom_point(size = 7)
gplot
输出
带图例的散点图
使用的软件包
现在,为了只画图例而不画图,我们必须加载三个包,分别是 grid 、 gridExtra 、 和 cowplot。
- grid 包是用来直接产生图形输出的
语法
install.packages(“grid”) #用于安装grid包
library(“grid”) #用于加载grid包
- gridExtra 是grid包的一个扩展,它支持图形对象的创建和编辑,但具有比grid更高级的功能。
语法
install.packages(“gridExtra”) #用于安装gridExtra包
library(“gridExtra”) #用于加载gridExtra包
- cowplot 包用于通过固定其核心组件来增强图形的可呈现性。
语法
install.packages(“cowplot”) #用于安装cowplot包
library(“cowplot”) #用于加载cowplot包
使用的函数
为了只绘制图例,我们使用了三个函数,它们都来自上述软件包。
- get_legend() 函数用于保存绘图的图例。
语法: get_legend(ggplot)
参数: 一个ggplot,要从中获取图例。
返回: 绘图的图例
- grid.newpage() 将网格从原来的设备上移到另一个设备上。
语法: grid.newpage()
返回: 删除当前绘图窗口并创建一个新的绘图窗口
- grid.draw() 从一个图形对象产生图形输出。
语法: grid.draw(legend)
返回: 在新的绘图窗口中绘制图例
因此,为了绘制一个只有图例的绘图,首先,用get_legend()绘制一个图例并保持在绘图上,然后用grid.newpage()擦除绘图,然后用grid.draw()将图例绘制到一个新的绘图窗口。
例子
# Load Packages
library("ggplot2")
library("grid")
library("gridExtra")
library("cowplot")
# Create a DataFrame
data <- data.frame(
Xdata = rnorm(10), Ydata = rnorm(10),
LegendData = c("ld-01", "ld-02", "ld-03",
"ld-04", "ld-05", "ld-06",
"ld-07", "ld-08", "ld-09",
"ld-10"))
# Create a Scatter Plot
gplot <- ggplot(data, aes(Xdata, Ydata, color = LegendData)) +
geom_point(size = 7)
# Draw Only Legend without plot
# Grab legend from gplot
legend <- get_legend(gplot)
# Create new plot window
grid.newpage()
# Draw Only legend
grid.draw(legend)
输出
只有图例,没有图表