3 回答
TA贡献1873条经验 获得超9个赞
ggplot除了你到目前为止,还有一个使用该软件包(版本3.x)的解决方案。
我们使用set 的position参数。如果要使用(和)的参数,也可以使用。geom_barposition = "fill"position = position_fill()position_fill()vjustreverse
请注意,您的数据采用“宽”格式,但ggplot2要求采用“长”格式。因此,我们首先需要gather数据。
library(ggplot2)
library(dplyr)
library(tidyr)
dat <- read.table(text = " ONE TWO THREE
1 23 234 324
2 34 534 12
3 56 324 124
4 34 234 124
5 123 534 654",sep = "",header = TRUE)
# Add an id variable for the filled regions and reshape
datm <- dat %>%
mutate(ind = factor(row_number()) %>%
gather(variable, value, -ind)
ggplot(datm, aes(x = variable, y = value, fill = ind)) +
geom_bar(position = "fill",stat = "identity") +
# or:
# geom_bar(position = position_fill(), stat = "identity")
scale_y_continuous(labels = scales::percent_format())
TA贡献1830条经验 获得超3个赞
克里斯比利是严格的,你只需要列的比例。使用您的数据是:
your_matrix<-( rbind( c(23,234,324), c(34,534,12), c(56,324,124), c(34,234,124), c(123,534,654) ) ) barplot(prop.table(your_matrix, 2) )
TA贡献1895条经验 获得超7个赞
prop.table是获得表格比例的友好方式。
m <- matrix(1:4,2) m [,1] [,2][1,] 1 3[2,] 2 4
保证金空白为您提供整个表格的比例
prop.table(m, margin=NULL) [,1] [,2][1,] 0.1 0.3[2,] 0.2 0.4
给它1给你行比例
prop.table(m, 1) [,1] [,2][1,] 0.2500000 0.7500000[2,] 0.3333333 0.6666667
2是列比例
prop.table(m, 2) [,1] [,2][1,] 0.3333333 0.4285714[2,] 0.6666667 0.5714286
- 3 回答
- 0 关注
- 800 浏览
添加回答
举报