我有一个数据框,有496个观察10个变量,例如water81,water80,water79,收入,教育,退休,peop81,cpeop,peop80。现在我有兴趣创建一个ggplot(退休后的收入分配)。我还需要在剧情的左侧创建一个地毯。但是当我尝试时,地毯会在左侧和右侧创建,但仅在顶部和底部创建。
ggplot(data=dataframe,aes(x=income,fill=retire))+
geom_histogram()+geom_rug(sides="t",color="red")
当双方=" b"或" t"正在创造地毯。如果我使用rugs =" l"或" r"地毯不会被创建。
答案 0 :(得分: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()
请注意,我有躲避的酒吧。否则,你的地毯标记要么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()