如何使用ggplot2绘制分组条形图,分段条形图和脊柱图?

时间:2019-05-22 08:50:03

标签: r ggplot2

我正在尝试在r中绘制分组条形图

这是我的代码:

xtable <- xtabs(~ view + grade, data=hs)

xtable

barplot(xtable, beside = T, legend.text = T)

library(reshape2)
data.m <- melt(xtable, id.vars='view')

data.m
# plot
ggplot(data.m, aes(grade, value)) + geom_bar(aes(fill = view), 
   width = 0.4, position = "dodge", stat="identity") +  
   theme(legend.position="top", legend.title = 
   element_blank(),axis.title.x=element_blank(), 
   axis.title.y=element_blank())

视图和等级是所售房屋的两个属性。等级是介于0到13之间的值,表示房屋的等级,而视图是介于0到4之间的值,表示房屋的外观有多好。

r中通常的barplot命令工作于Oaky。但是,我喜欢它的ggplot。 我遵循了类似问题的答案,但是我得到了一个堆叠的条,而不是一个分组的条。另外,如何使用相同的数据生成分段的条形图和脊柱图?

enter image description here

1 个答案:

答案 0 :(得分:1)

您的代码认为view是连续的,而不是连续的。将其转换为factor

library(ggplot2)
library(reshape2)

hs <- read.csv(file = file.choose())

xtable <- xtabs(formula = (~ view + grade),
                data = hs)

data.m <- melt(data = xtable,
               id.vars='view')

ggplot(data = data.m,
       mapping = aes(x = grade,
                     y = value)) +
  geom_bar(mapping = aes(fill = factor(x = view)),
           position = "dodge",
           stat="identity")

这将生成以下内容,您可以稍后对其进行修改以使其看起来更好。

side_by_side_barplot