Ggpairs barDiag 与正态曲线
Ggpairs barDiag with normal curve
我正在使用 ggplot2 中的 ggpairs。
我需要在 ggpairs 的对角线上得到一个直方图,但想使用数据的均值和 sd 叠加正态密度曲线。
我阅读了帮助 (https://www.rdocumentation.org/packages/GGally/versions/1.4.0/topics/ggpairs),但找不到执行此操作的选项。我想我必须构建自己的函数 (myfunct) 然后
ggpairs(sample.dat, diag=list(continuous = myfunct))
有没有人试过这个?
我尝试了以下方法:
head(data)
x1 x2 x3 x4 x5 x6 F1 F2
1 -0.749 -1.57 0.408 0.961 0.777 0.171 -0.143 0.345
myhist = function(data){
ggplot(data, aes(x)) +
geom_histogram(aes(y = ..density..),colour = "black") +
stat_function(fun = dnorm, args = list(mean = mean(x), sd = sd(x)))
}
ggpairs(sample.data, diag=list(continuous = myhist))
结果是:
Error in (function (data) : unused argument (mapping = list(~x1))
This question 在ggplot2
中提供了将正态曲线添加到直方图的代码示例。您可以使用它来编写自己的函数以传递给 ggpairs
的 diag
参数。要计算数据的mean
和sd
,可以使用例如eval_data_col(data, mapping$x)
抓取相关数据。下面的示例(可能比需要的复杂一点,但它允许您使用 wrap
功能传递参数以更改颜色等。
library(GGally)
diag_fun <- function(data, mapping, hist=list(), ...){
X = eval_data_col(data, mapping$x)
mn = mean(X)
s = sd(X)
ggplot(data, mapping) +
do.call(function(...) geom_histogram(aes(y =..density..), ...), hist) +
stat_function(fun = dnorm, args = list(mean = mn, sd = s), ...)
}
ggpairs(iris[1:100, 1:4],
diag=list(continuous=wrap(diag_fun, hist=list(fill="red", colour="blue"),
colour="green", lwd=2)))
我正在使用 ggplot2 中的 ggpairs。
我需要在 ggpairs 的对角线上得到一个直方图,但想使用数据的均值和 sd 叠加正态密度曲线。
我阅读了帮助 (https://www.rdocumentation.org/packages/GGally/versions/1.4.0/topics/ggpairs),但找不到执行此操作的选项。我想我必须构建自己的函数 (myfunct) 然后
ggpairs(sample.dat, diag=list(continuous = myfunct))
有没有人试过这个?
我尝试了以下方法:
head(data)
x1 x2 x3 x4 x5 x6 F1 F2
1 -0.749 -1.57 0.408 0.961 0.777 0.171 -0.143 0.345
myhist = function(data){
ggplot(data, aes(x)) +
geom_histogram(aes(y = ..density..),colour = "black") +
stat_function(fun = dnorm, args = list(mean = mean(x), sd = sd(x)))
}
ggpairs(sample.data, diag=list(continuous = myhist))
结果是:
Error in (function (data) : unused argument (mapping = list(~x1))
This question 在ggplot2
中提供了将正态曲线添加到直方图的代码示例。您可以使用它来编写自己的函数以传递给 ggpairs
的 diag
参数。要计算数据的mean
和sd
,可以使用例如eval_data_col(data, mapping$x)
抓取相关数据。下面的示例(可能比需要的复杂一点,但它允许您使用 wrap
功能传递参数以更改颜色等。
library(GGally)
diag_fun <- function(data, mapping, hist=list(), ...){
X = eval_data_col(data, mapping$x)
mn = mean(X)
s = sd(X)
ggplot(data, mapping) +
do.call(function(...) geom_histogram(aes(y =..density..), ...), hist) +
stat_function(fun = dnorm, args = list(mean = mn, sd = s), ...)
}
ggpairs(iris[1:100, 1:4],
diag=list(continuous=wrap(diag_fun, hist=list(fill="red", colour="blue"),
colour="green", lwd=2)))