2016-09-28 79 views
-1

我有一个数据框,有496个观察变量,它们是case,water81,water80,water79,income,education,retire,peop81,cpeop,peop80。现在Iam有兴趣创建一个ggplot(退休收入分配)。我还需要在情节的左侧创建一个地毯。但是当我尝试时,地毯被注意在左侧和右侧创建,但仅在顶部和底部创建。在R中使用ggplot创建地毯

ggplot(data=dataframe,aes(x=income,fill=retire))+ 
    geom_histogram()+geom_rug(sides="t",color="red") 

当sides =“b”或“t”地毯被创建时。如果我使用地毯=“l”或“r”地毯没有创建。

enter image description here

回答

2

哪里会想到该系统把地毯痕迹例图的y轴?而且,同样重要的是:你会如何解读它们?地毯标记不适用于这种数据显示。

提供您的代码将帮助重复的例子,但即使没有它,我可以告诉你没有映射y变量,它geom_rug需要做出y轴地毯的痕迹。

如果您坚持这样做,您需要手动生成y轴位置,然后将它们传递到ggplot。 (请注意,我用的管道从magrittr构建数据)

toPlot <- 
    mpg %$% 
    table(class, cyl) %>% 
    as.data.frame() 

ggplot(toPlot 
     , aes(x = class 
      , fill = cyl 
      , col = cyl 
      , y = Freq)) + 
    geom_bar(stat = "identity" 
      , position = "dodge") + 
    geom_rug() 

enter image description here

注意,我躲着吧。否则,您的地毯标记可能会a)与酒吧不一致,或者b)没有酒吧不能解释。

下面是使用的例子的数值变量,使用cut把它分解成像一个柱状图箱:

toPlotNum <- 
    mpg %$% 
    table(class 
     , City = cut(cty,pretty(cty))) %>% 
    as.data.frame() 

ggplot(toPlotNum 
     , aes(x = City 
      , fill = class 
      , col = class 
      , y = Freq)) + 
    geom_bar(stat = "identity" 
      , position = "dodge") + 
    geom_rug() 

或者,显示密度,而不是:

library(stringr) 

ggplot(mpg 
     , aes(x = cty 
      , col = word(trans, sep = fixed("(")))) + 
    geom_density() + 
    geom_rug() 

enter image description here

+0

我有在问题中列出的10个变量的数据集。因此,退休专栏由“是”或“否”选项组成,收入栏包含数字中的详细收入值。我需要在收入和退休之间绘制一张ggplot2 ...你能帮忙吗?我也想知道什么时候应该使用geom_histogram,geom_point或geom_bar。 –

+0

我添加了一个带有数字变量的版本(只需添加'cut')。我的答案是什么*不*告诉你如何添加这些地毯标记?如果你有一个看起来像你试图创建的情节的例子,这可能会有所帮助。 'geom_histogram'本质上是'geom_bar'的一个包装器,它可以为你装箱。 'geom_point'用于完全不同类型的数据。你在这个情节中试图传达什么?如果您只是想比较分布,请参阅我的'geom_density'示例作为潜在替代方案。 –