我在一个数据框上使用xyplot,并希望为一个面板函数提供不是(x,y,...)参数的数据,而是数据框的一些附加列(例如下面的例子中的k):
library(lattice)
mydata <- data.frame(xxx = 1:20,
yyy = rbinom(20,20,.5),
uuu = gl(2,10),
k = rnorm(20))
xyplot( formula = yyy ~ xxx | uuu, data = mydata,
panel = function(x,y,k, ...){
n <- x * k
panel.xyplot(n,y,...)
})
Run Code Online (Sandbox Code Playgroud)
我知道这不起作用,因为R不会将此k列提供给面板功能.有一个简单的方法吗?
(我不是试图在我的实际面板函数中将x乘以k.我正在调用另一个需要k的函数...)
非常感谢!
我尝试在R中使用ggplot2的新功能,允许创建我们自己的stat_函数.我正在创建一个简单的计算和绘制排列在2d数组上的点之间的插值表面.
我想创建一个stat_topo()要求x,y以及val美学,绘制简单的geom_raster内插的val映射fill.
library(ggplot2)
library(dplyr)
library(akima)
cpt_grp <- function(data, scales) {
#interpolate data in 2D
itrp <- akima::interp(data$x,data$y,data$val,linear=F,extrap=T)
out <- expand.grid(x=itrp$x, y=itrp$y,KEEP.OUT.ATTRS = F)%>%
mutate(fill=as.vector(itrp$z))
# str(out)
return(out)
}
StatTopo <- ggproto("StatTopo", Stat,
compute_group = cpt_grp,
required_aes = c("x","y","val")
)
stat_topo <- function(mapping = NULL, data = NULL, geom = "raster",
position = "identity", na.rm = FALSE, show.legend = NA,
inherit.aes = TRUE, ...) {
layer(
stat …Run Code Online (Sandbox Code Playgroud)