如何将图表折叠成一个条形?

时间:2019-06-24 22:59:21

标签: r

我想生成累计百分比条形图,总计为100%。我已经弄清楚了如何将频率转换成图表上的百分比,但是我需要将图表折叠成一个条形。您可以在基本R中提供任何帮助。

barplot(prop.table(table(log$log1)), beside=FALSE, horiz = TRUE)

我希望图表中只有一个柱形加到100%。目前,我有4个酒吧。见下图: enter image description here

我想要类似下图的内容,但是只有一个水平条。我可以自己弄清楚颜色部分,但不能弄清楚如何将上图中的4个条折叠成一个。

enter image description here

2 个答案:

答案 0 :(得分:0)

如果您有数据框:

df <- data.frame(c(75, 7, 5, 13), c("u", "v", "x", "z"), c("x", "x", "x", "x"))
names(df) <- c("Value", "Name", "xvar")

ggplot(df, aes(x = xvar, y = Value, fill = Name, label = Value)) +
  geom_bar(stat = "identity") +
  geom_text(position = position_stack(vjust = 0.5)) + 
  theme(axis.title.x=element_blank(), axis.text.x=element_blank(),  
        axis.ticks.x=element_blank())

Stacked barplot

答案 1 :(得分:0)

如果您可以提供一些参考数据,将会很有帮助。

我认为您想要像this这样的东西:

代码在这里:

#Create data Randon data
set.seed(1124)
data=matrix(sample(1:30,4) , nrow=4)
colnames(data)=c("Values")
rownames(data)=c("2","3","3.5","4")

#create color palette:
library(RColorBrewer)
coul = brewer.pal(4, "Pastel2") 

#Transform this data in %
data_percentage=apply(data, 2, function(x){x/sum(x,na.rm=T)})

# Make a stacked barplot
barplot(data_percentage, col=coul , 
    horiz = TRUE, border="white", xlab="group",
    legend.text = row.names(data_percentage))    

stackbar