我试图创建一个包含GGally图的列表对象。这些图都是用两个数据集创建的,主数据集和主数据集的子集将再次用橙色绘制。在下面的MWE中,创建了三个绘图图,每个绘图图比较mtcars数据中的两列,每个绘图图包含不同数量的子集点,要用橙色绘制:
PLOT_1:mpg和cyl,1个橙色覆盖点
library(GGally)
library(ggplot2)
data = mtcars
data$ID = rownames(mtcars)
data = data[, c(12,1:11)]
my_fn <- function(data, mapping, ...){
xChar = as.character(mapping$x)
yChar = as.character(mapping$y)
x = data[,c(xChar)]
y = data[,c(yChar)]
p <- ggplot(data, aes(x=x, y=y)) + geom_point() + geom_point(data = colorData, aes_string(x=xChar, y=yChar), inherit.aes = FALSE)
p
}
ret=list()
colorVec = c(1, 10, 20)
k=1
for (j in c(3:5)){
datSel <- cbind(ID=data$ID, data[,c(2, j)])
datSel$ID = as.character(datSel$ID)
colorData <- datSel[sample(1:nrow(data), colorVec[k]),]
p <- ggpairs(datSel[,-1], lower = list(continuous = my_fn), upper = list(continuous = wrap("cor", size = 4))) + theme_gray()
ret[[paste0("Plot_",j)]] <- p
k=k+1
}
> ret[["Plot_1"]]
Error in FUN(X[[i]], ...) : object 'cyl' not found
> ret[["Plot_2"]]
Error in FUN(X[[i]], ...) : object 'disp' not found
> ret[["Plot_3"]]
Correctly plotted
添加会话信息以获得重复性
> sessionInfo()
R version 3.4.3 (2017-11-30)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Sierra 10.12.6
Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] ggplot2_2.2.1 GGally_1.3.2
loaded via a namespace (and not attached):
[1] Rcpp_0.12.15 reshape_0.8.7 grid_3.4.3 plyr_1.8.4 gtable_0.2.0
[6] magrittr_1.5 scales_0.5.0 pillar_1.2.1 stringi_1.1.6 rlang_0.2.0
[11] reshape2_1.4.3 lazyeval_0.2.1 labeling_0.3 RColorBrewer_1.1-2 tools_3.4.3
[16] stringr_1.3.0 munsell_0.4.3 yaml_2.1.17 compiler_3.4.3 colorspace_1.3-2
[21] tibble_1.4.2
一个可能的解决方案,如果我正确理解了你的问题:
library(GGally)
data = mtcars
data$ID = rownames(mtcars)
data = data[, c(12,1:11)]
# Load tidyverse
library(tidyverse)
# Create a vector list for each plot you want
var_list <- data.frame(var = names(data)[3:5],
color = colorVec)
# Function for sampling orange points
my_color_fn <- function(data, color_nb) {
sample(1:nrow(data), color_nb)
}
# Create a list with a data for each variable with colors
data_list <- apply(var_list, 1,
function(x)
data %>%
select(ID, mpg, as.character(x[["var"]])) %>%
mutate(color = "black") %>%
mutate(color = replace(color, my_color_fn(., x[["color"]]), "orange")))
# Update my_fn function
my_fn <- function(data, mapping, ...){
xChar = as.character(mapping$x)
yChar = as.character(mapping$y)
x = data[, c(xChar)]
y = data[, c(yChar)]
p <- ggplot(data, aes_string(x=x, y=y)) +
geom_point(aes(color = color)) +
scale_color_manual("", values = c("black" = "black",
"orange" = "orange"))
p
}
# Create a function to get ggpairs for each subset
my_fn2 <- function(data)
{
p <- ggpairs(data %>% select(- ID), 1:2,
lower = list(continuous = my_fn),
upper = list(continuous = wrap("cor", size = 4)))
return(p)
}
# Get plot for each list element
ret <- lapply(data_list, function(x) my_fn2(x))
ret[[1]]
ret[[2]]
ret[[3]]
给定: 我想把所有的车都标出来。将轮胎分为单独的轮胎板。我知道我可以做一个
在我的fabricjs中,我制作了一张画布,在画布上添加了一幅图像,并将图像设置为背景。然后我把卡瓦什剪到一定的宽度和高度。 剪辑完画布后,我想要一个新的画布或相同的画布,以剪裁区域作为背景,所有画布都以其宽度和高度覆盖画布,或者可以制作具有剪裁区域高度和宽度的新画布 目前我正在做这件事。。 在这里,我可以轻松地剪辑画布与我给定的左,顶,宽度和高度,但我得到了相同的画布与剪辑部分和删除部分与另一种
我有一个类来代表一个玩家的手牌。但是,我(在另一个类中)有一个数组列表,我想在其中表示一堆玩家手。问题是我不知道如何在多手牌的数组列表中将一张牌添加到手牌中。我有一个代表卡牌和一副牌的类,效果很好。我只是试图了解如何将对象添加到数组列表中的对象。谢谢!
我想裁剪图像中最大的对象(字符)。此代码仅在没有线条的情况下有效(如第一幅图所示)。但我需要忽略线,使第二个图像的形象。仅裁剪最大的对象图像。
预期输出JSON: 提前致谢
我有List sample1=lists.newarrayList(BIGINTEGER1,BIGINTEGER2,BIGINTEGER3); 我必须创建一个新的列表sample2,其中还有一个值“bigInteger4”,以及sample1列表: 我怎么能那样做?