提前道歉,我已经做了一点这个问题。我有一个相对较大的数据集,如下所示:
这就是问题所在。我一直在创建GLM,从中我对混杂变量和夹具的估计进行评估(如果你不知道我的意思,基本上我需要计算我的最佳拟合线,而不仅仅是将其推到平均值点)。这一切都很好,花花公子,因为我做了一行代码,这对我有用。遗憾的是,我有19个这样的图表 - 每行1个 - 并且需要为6个数据集执行此操作。
到目前为止,我尝试自动化这个过程一直是痛苦和令人沮丧的。如果有人认为成为一名生物学家意味着拥抱大熊猫,那他们就错了。我已经有了代码来接受变量并一次生成一个图形,但是没有任何运气可以在一帧上生成它们。
想象一下这个,但有19个图表。这就是现在的梦想 ![想象一下这个,但有19张图表。这就是现在的梦想] [2]
答案 0 :(得分:1)
不幸的是,您的数据不是reproducible,但我认为可以采用以下方法。
使用这样的几个对象可能会非常混乱。这是使用list
非常有帮助的地方。您只需要my_list
对象中的x,y和截距。然后,您可以使用layout
和循环绘制所有图表。
my_list <- list()
for(i in 1:19){
x <- runif(10)
y <- rnorm(10)
intercept <- lm(y~x)$coefficients[1]
name <- paste('plot_',i,sep='')
tmp <- list(x=x, y=y, intercept=intercept)
my_list[[name]] <- tmp
}
layout(matrix(1:20, nrow = 4, ncol = 5, byrow = TRUE))
for(j in 1:length(my_list)) {
plot(x=my_list[[j]]$x, y=my_list[[j]]$y, main=attributes(my_list[j])$names,xlab="x-label",ylab="y-label")
abline(h=my_list[[j]]$intercept)
}
答案 1 :(得分:1)
只是想发布你正在尝试做的ggplot2版本,看看它是否也适合你。
我还展示了在每个方面内为多个类拟合线的示例(取决于您正在进行的分析有多复杂)。
首先安装ggplot2如果你还没有:
Range("B17").Select
ActiveSheet.Pictures.Insert(PhotoLocation).Select 'Insert photograph from file.
Selection.ShapeRange.ScaleWidth 0.2, msoFalse, msoScaleFromTopLeft
这里我只是使用内置的虹膜数据集设置一些虚拟数据。我基本上试图模拟19个不同的数据集。
Dim p() As Process
Private Sub CheckIfRunning()
p = Process.GetProcessesByName("iw5sp")
If p.Count > 0 Then
' Status: Game Not Found!
Else
' Status: Game Found!
End If
End Sub
# install.packages('ggplot2')
library(ggplot2)
有点棘手,但它包含两个参数,一个函数和一个应用于该函数的参数列表。所以我在set.seed(1776)
samples <- list()
num_datasets <- 19
datasets <- list(num_datasets)
# dynamically create some samples
for(i in 1:num_datasets) {
samples[[i]] <- sample(1:nrow(iris), 20)
}
# dynamically assign to many data sets (keep only 2 numeric columns)
for(i in 1:num_datasets) {
datasets[[i]] <- cbind(iris[samples[[i]], c('Petal.Length', 'Petal.Width', 'Species')], dataset_id = i)
# assign(paste0("dataset_", i), iris[samples[[i]], c('Petal.Length', 'Petal.Width')])
}
对象(这是一个数据集列表)中的所有不同数据集上使用do.call
。
rbind()
第一个图是显示数据的一个大散点图。
datasets
接下来是绘图的19个单独“方面”,它们都在相同的比例和相同的图形窗口中。
combined_data <- do.call(rbind, datasets)
具有最佳拟合线的刻面图
最后,数据再次以小平面绘制,但由鸢尾花的种类着色,每个物种都有自己的最佳拟合线。
# all data
ggplot(data=combined_data, aes(x=Petal.Length, y=Petal.Width)) +
geom_point(alpha = 0.2) +
ggtitle("All data")
在类别中最适合的方面图
我看到你提到你有自己的预先计算好的最佳拟合线,但我认为这在概念上可能会让你更接近你需要的位置?
干杯!