堆积100%的条形图

时间:2017-07-21 14:33:37

标签: r data-visualization

我想想象数量的比例,如:

Four values are votes for great/good/moderate/bad
data1 <- c(4, 6, 0, 1)
data2 <- c(2, 0, 1, 15)

使用R作为堆积的水平条形图,其中两个条形data1data2中的每一条都是图表的整个宽度,而大/好/中/差是不同的颜色/图案,如:< / p>

XXXXXXXXOOOOOOOOOOOO%%

XX*%%%%%%%%%%%%%%%%%%%

我在R中使用了很多其他图表(除了自动化,使用它的另一个原因!),但我无法掌握如何做到这一点。

3 个答案:

答案 0 :(得分:2)

也许是这样的:

dat <-data.frame(data1,data2)

barplot(prop.table(as.matrix(dat), margin = 2), horiz  = TRUE)

enter image description here

答案 1 :(得分:2)

这是一个ggplot2答案:

library(ggplot2)
data1 <- c(4, 6, 0, 1)
data2 <- c(2, 0, 1, 15)

MyData <- data.frame(DataSource= c(rep("data1",4),rep("data2",4)),
                     quality=rep(c("great","good","moderate","bad"),2),
                     Value=c(data1/sum(data1),data2/sum(data2)))

ggplot(data=MyData,aes(DataSource,Value,fill=quality))+geom_col()

enter image description here

答案 2 :(得分:1)

我希望这可以指出你正确的方向:

data1 <- c(4, 6, 0, 1)
data2 <- c(2, 0, 1, 15)
data3 <- c("great","good","moderate","bad")

df <- data.frame(group1 = data1,group2 = data2, class = data3)

library(reshape2)
library(dplyr)
library(ggplot2)

df<- melt(df,"class")
df <- df %>% group_by(variable) %>% mutate(perc = value/sum(value))
ggplot(df, aes(x = variable, y = perc,fill=class)) +
  geom_bar(stat='identity') + coord_flip()

enter image description here