亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

創建堆疊的條形圖,其中每個堆棧按比例縮放為100%

創建堆疊的條形圖,其中每個堆棧按比例縮放為100%

拉風的咖菲貓 2019-08-08 15:12:39
創建堆疊的條形圖,其中每個堆棧按比例縮放為100%我有一個像這樣的data.frame:df <- read.csv(text = "ONE,TWO,THREE                        23,234,324                        34,534,12                        56,324,124                        34,234,124                        123,534,654")我想生成一個百分比條形圖,看起來像這樣(在LibreOffice Calc中制作): 因此,條形應該標準化,因此所有堆疊具有相同的高度并且總和為100%。到目前為止,我所能獲得的是一個堆積的條形圖(不是百分比),使用:barplot(as.matrix(df))有幫助嗎?
查看完整描述

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())


查看完整回答
反對 回復 2019-08-08
?
牛魔王的故事

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) )


查看完整回答
反對 回復 2019-08-08
?
人到中年有點甜

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


查看完整回答
反對 回復 2019-08-08
  • 3 回答
  • 0 關注
  • 838 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號