如何将图像添加到 R 中的 ggplot2?
在本文中,我们将讨论如何使用 R 编程语言中的 ggplot2 将图像插入或添加到绘图中。
这个包的 ggplot() 方法用于初始化一个 ggplot 对象。它可用于声明图形的输入数据框,也可用于指定绘图美学集。 ggplot()函数用于构造初始绘图对象,并且几乎总是跟随着要添加到绘图中的组件。
Syntax:
ggplot(data, mapping = aes())
Parameters :
- data – The data frame used for data plotting
- mapping – Default list of aesthetic mappings to use for plot.
方法一:使用patchwork包
“jpeg”包用于提供一种对 JPEG 图像执行操作的简单方法,即读取、写入和显示以 JPEG 格式存储的位图图像。
句法:
install.packages(“jpeg”)
此包的 readJPEG() 方法用于将图像从 JPEG 文件/内容访问到光栅数组。它将位图图像读取到本机 rasterImage 中。
Syntax:
readJPEG(path, native = FALSE)
Parameters :
- path – The name of the JPEG file to access into the working space.
- native – Indicator of the image representation. If TRUE then the result is a native raster representation.
另一个包“patchwork”通过提供用于组合多个图的数学运算符来允许任意复杂的图组合。它用于增强和描述性地块构建和分析。它主要面向 ggplot2 的用户,并确保其正确对齐。
句法:
install.packages(“patchwork”)
该包的 inset_element()函数提供了一种创建附加插图的方法,并让您可以完全控制这些插图相对于彼此的位置和方向。该方法将指定的图形标记为要添加到前图中的插图。
Syntax:
inset_element( p, left, bottom, right, top)
Parameter:
- p – A grob, ggplot, patchwork, formula, raster, or nativeRaster object to be added as an inset to the plot.
- left, bottom, right, top – the coordinate positions for adding p.
例子:
R
# loading the required libraries
library("jpeg")
library("ggplot2")
library("patchwork")
# defining the x coordinates
xpos <- 1:5
# defining the y coordinates
ypos <- xpos**2
data_frame = data.frame(xpos = xpos,
ypos = ypos)
print ("Data points")
print (data_frame)
# plotting the data
graph <- ggplot(data_frame, aes(xpos, ypos)) +
geom_point()
# specifying the image path
path <- "/Users/mallikagupta/Desktop/GFG/gfg.jpeg"
# read the jpef file from device
img <- readJPEG(path, native = TRUE)
# adding image to graph
img_graph <- graph +
inset_element(p = img,
left = 0.05,
bottom = 0.65,
right = 0.5,
top = 0.95)
# printing graph with image
print (img_graph)
R
# loading the required libraries
library("jpeg")
library("ggplot2")
library("grid")
# defining the x coordinates
xpos <- 1:5
# defining the y coordinates
ypos <- xpos**2
data_frame = data.frame(xpos = xpos,
ypos = ypos)
print ("Data points")
print (data_frame)
# specifying the image path
path <- "/Users/mallikagupta/Desktop/GFG/gfg.jpeg"
# read the jpef file from device
img <- readJPEG(path, native = TRUE)
# converting to raster image
img <- rasterGrob(img, interpolate=TRUE)
# plotting the data
qplot(xpos, ypos, geom="blank") +
annotation_custom(g, xmin=-Inf, xmax=Inf, ymin=-Inf, ymax=Inf) +
geom_point()
输出
[1] "Data points"
xpos ypos
1 1 1
2 2 4
3 3 9
4 4 16
5 5 25
方法二:使用grid包
R 中的 grid 包与用于创建 ggplot2 绘图系统的图形函数有关。
句法:
install.packages(“grid”)
R 中的 rasterGrob() 方法用于在工作空间中创建光栅图像图形对象。它将图像路径(PNG 或 JPEG)作为第一个参数作为输入,并将其转换为光栅图形图像。
句法:
rasterGrob (path, interpolate = TRUE)
R 中的 qplot() 方法用于创建快速绘图,该绘图可用作各种其他创建绘图方法的包装器。它可以更轻松地创建复杂的图形。
Syntax:
qplot(x, y=NULL, data, geom=”auto”, xlim = c(NA, NA), ylim =c(NA, NA))
Parameters :
- x, y – x and y coordinates
- data – data frame to be used
- geom – indicator of the geom to be used
- xlim, ylim – x and y axis limits
annotation_custom() 可以与 qplot() 方法结合使用,这是一种特殊的几何图形,旨在用作静态注释。使用此选项,绘图的实际比例保持不变。
Syntax:
annotation_custom(grob, xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = Inf)
Parameters :
- g – The grob to display
- xlim, ylim – x and y axis limits
例子:
电阻
# loading the required libraries
library("jpeg")
library("ggplot2")
library("grid")
# defining the x coordinates
xpos <- 1:5
# defining the y coordinates
ypos <- xpos**2
data_frame = data.frame(xpos = xpos,
ypos = ypos)
print ("Data points")
print (data_frame)
# specifying the image path
path <- "/Users/mallikagupta/Desktop/GFG/gfg.jpeg"
# read the jpef file from device
img <- readJPEG(path, native = TRUE)
# converting to raster image
img <- rasterGrob(img, interpolate=TRUE)
# plotting the data
qplot(xpos, ypos, geom="blank") +
annotation_custom(g, xmin=-Inf, xmax=Inf, ymin=-Inf, ymax=Inf) +
geom_point()
输出
[1] "Data points"
xpos ypos
1 1 1
2 2 4
3 3 9
4 4 16
5 5 25