如何绘制两个变量的密度函数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何绘制两个变量的密度函数?相关的知识,希望对你有一定的参考价值。
我有两个长度相同的变量,v1 =实际alpha,v2 =受激alpha。
v1 =(0.1,0.6,0.8,0.11)v2 =(0.3,0.1,0.5,0.7)
我想显示将这两个位置进行比较的密度函数,请复制此图片:
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS81QjNsUS5qcGcifQ==” alt =“在此处输入图像描述”>
答案
为了简化绘图,我将创建一个像这样的数据框:
v1 <- c(0.1, 0.6, 0.8, 0.11)
v2 <- c(0.3, 0.1, 0.5, 0.7)
df <- data.frame(x = c(v1, v2), group = rep(c("Actual", "Simulated"), each = 4))
现在您可以使用ggplot
轻松绘制密度:
library(ggplot2)
ggplot(df) +
stat_density(aes(x, linetype = group), geom = "line", position = "identity") +
scale_linetype_manual(values = c(1, 2)) +
theme_bw() +
theme(legend.position = c(0.9, 0.85))
当然,这看起来与您提供的密度图不太相似-只是因为v1
和v2
中的数据太短而没有集中趋势。这是完全相同的情节,带有一些玩具数据,可以更好地匹配您情节中使用的数据:
set.seed(69)
v1 <- rnorm(100, -0.1, 0.12)
v2 <- rnorm(100, 0, 0.06)
df <- data.frame(x = c(v1, v2), group = rep(c("Actual", "Simulated"), each = 100))
ggplot(df) +
stat_density(aes(x, linetype = group), geom = "line", position = "identity") +
scale_linetype_manual(values = c(1, 2)) +
theme_bw() +
theme(legend.position = c(0.9, 0.85)) +
scale_x_continuous(limits = c(-.6, .4))
由reprex package(v0.3.0)在2020-05-21创建
另一答案
这是一个base R
解决方案(基于@Allan的第二个数据帧:]
hist(df$x[df$group=="Simulated"],
freq = F,
xlab = "Alpha in %",
border = "white",
main = "Density function for Actual and Simulated data", cex.main = 0.9,
xlim = range(df$x[df$group=="Actual"]))
lines(density(df$x[df$group=="Simulated"]), lty = 2)
lines(density(df$x[df$group=="Actual"]), lty = 1)
legend("topleft", legend = c("Actual", "Simulated"), bty = "n", lty = c(1,2))
grid()
以上是关于如何绘制两个变量的密度函数?的主要内容,如果未能解决你的问题,请参考以下文章
R语言使用car包的scatterplotMatrix函数绘制散点图矩阵并添加线性回归曲线平滑曲线以及对角线核密度图和轴须图rugcor函数计算变量两两相关性