如何使用 'picture' 对象作为图形键中的符号?
How do I use a 'picture' object as a symbol in a graph key?
我正在使用 lattice 中的 xyplot() 创建图形,并使用 grImport 包将图片绘制为带有 grid.symbols() 的绘图符号。
这是我的图形代码的简短版本,其中 'mypic' 是我用作绘图符号的图片对象(使用 grImport 创建)。
xyplot(y~x, data=dat,
panel=function(x, y, ...) {
grid.symbols(mypic, x, y, units = "native",
size = unit(10, "mm"),
use.gc = FALSE,
gp = gpar(col = "white", fill = c("red","blue")))
})
我想创建一个图例来显示我在图表中使用的相同绘图符号。我认为这样的事情会奏效:
key = list(...
points = list(pch = grid.picture(mypic))
)
但事实并非如此。
所以我的问题是:如何将图片对象传递给 'key' 参数以将其用作键中的符号?
据我所知,如果不修改代码,就无法将您的图片从 grImport
传递到 key
。
我有一个解决方案,虽然它非常临时,特别是因为键中的图像移动然后图像被调整大小。 (我认为这可以通过一些努力来解决。)无论如何,使用 key
(或 auto.key
)并手动将图像放置在键处将获得接近预期的结果。
library(lattice)
library(grImport)
dat <- data.frame(x = rnorm(10), y = rnorm(10), ind = c("A", "B"))
PostScriptTrace("petal.ps") # from https://www.jstatsoft.org/article/view/v030i04
petal <- readPicture("petal.ps.xml")
xyplot(y ~ x, groups = ind, data = dat,
auto.key = list(points = FALSE),
panel = function(x, y, ...) {
grid.symbols(petal, x, y, units = "native",
size = unit(4, "mm"),
use.gc = FALSE,
gp = gpar(col = "white", fill = c("red","blue")))
})
grid.symbols(petal, c(0.55, 0.55), c(0.92, 0.95),
size = unit(4, "mm"),
use.gc = FALSE,
gp = gpar(col = "white", fill = c("red","blue")))
我正在使用 lattice 中的 xyplot() 创建图形,并使用 grImport 包将图片绘制为带有 grid.symbols() 的绘图符号。
这是我的图形代码的简短版本,其中 'mypic' 是我用作绘图符号的图片对象(使用 grImport 创建)。
xyplot(y~x, data=dat,
panel=function(x, y, ...) {
grid.symbols(mypic, x, y, units = "native",
size = unit(10, "mm"),
use.gc = FALSE,
gp = gpar(col = "white", fill = c("red","blue")))
})
我想创建一个图例来显示我在图表中使用的相同绘图符号。我认为这样的事情会奏效:
key = list(...
points = list(pch = grid.picture(mypic))
)
但事实并非如此。
所以我的问题是:如何将图片对象传递给 'key' 参数以将其用作键中的符号?
据我所知,如果不修改代码,就无法将您的图片从 grImport
传递到 key
。
我有一个解决方案,虽然它非常临时,特别是因为键中的图像移动然后图像被调整大小。 (我认为这可以通过一些努力来解决。)无论如何,使用 key
(或 auto.key
)并手动将图像放置在键处将获得接近预期的结果。
library(lattice)
library(grImport)
dat <- data.frame(x = rnorm(10), y = rnorm(10), ind = c("A", "B"))
PostScriptTrace("petal.ps") # from https://www.jstatsoft.org/article/view/v030i04
petal <- readPicture("petal.ps.xml")
xyplot(y ~ x, groups = ind, data = dat,
auto.key = list(points = FALSE),
panel = function(x, y, ...) {
grid.symbols(petal, x, y, units = "native",
size = unit(4, "mm"),
use.gc = FALSE,
gp = gpar(col = "white", fill = c("red","blue")))
})
grid.symbols(petal, c(0.55, 0.55), c(0.92, 0.95),
size = unit(4, "mm"),
use.gc = FALSE,
gp = gpar(col = "white", fill = c("red","blue")))