我是R的新手所以我希望我的问题不是太简单。我试图在同一图上绘制两个连续变量的两条密度曲线:LTV1和LTV2。
做每个密度很简单,我使用ggplot2这行代码:
qplot(LTV1, data = dat, geom = "density", main="LTV1")
和
qplot(LTV2, data = dat, geom = "density", main="LTV2")
但是我没有办法把它们放在同一个阴谋上。任何想法怎么办呢?
这是我的数据框示例:
dat <- read.table(text = " UserID LTV1 LTV2
123 3 9
654 3 8
658 1 2
333 1 2
455 1 8
857 6 1
542 6 7
785 6 1
357 5 9
963 8 5
444 2 1
524 2 2
777 6 2
564 1 1
786 3 9
412 1 4 ",header = TRUE)
答案 0 :(得分:3)
ggplot
以高格式提供数据,而不是宽广的格式,例如你的拥有方式。在两者之间进行转换的最简单方法是使用reshape2
pacakge。在这种情况下,我们需要melt()
函数。 <怎么样
ggplot(melt(dat, "UserID"), aes(value, color=variable)) + geom_density() + xlim(-5,15)
请注意,我们必须手动扩展xlim
以使密度降至0.默认情况下,只需缩放到您有观察的区域。
您可以选择添加多个密度图层
ggplot(dat) +
geom_density(aes(LTV1, color="LTV1")) +
geom_density(aes(LTV2, color="LTV2")) +
scale_color_hue(name="Variable")
但是如果你有一堆列,那么这种扩展就不会很好。通常更容易重塑您的数据