如何在同一图表上绘制两个连续变量的两条密度曲线

时间:2014-09-14 13:27:27

标签: r plot ggplot2

我是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)

1 个答案:

答案 0 :(得分:3)

ggplot以高格式提供数据,而不是宽广的格式,例如你的拥有方式。在两者之间进行转换的最简单方法是使用reshape2 pacakge。在这种情况下,我们需要melt()函数。 <怎么样

ggplot(melt(dat, "UserID"), aes(value, color=variable)) + geom_density() + xlim(-5,15)

enter image description here

请注意,我们必须手动扩展xlim以使密度降至0.默认情况下,只需缩放到您有观察的区域。

您可以选择添加多个密度图层

ggplot(dat) + 
   geom_density(aes(LTV1, color="LTV1")) + 
   geom_density(aes(LTV2, color="LTV2")) + 
   scale_color_hue(name="Variable")

enter image description here

但是如果你有一堆列,那么这种扩展就不会很好。通常更容易重塑您的数据