2017-04-09 28 views
0

我試圖給條形圖着色,不能爲我的生活弄清楚我做錯了什麼。我的數據看起來像多色條形圖的問題

x <- structure(list(A = 0.98, B = 0.46, C = 0.81, D = 0.66, E = 0.76, 
F = 0.42, G = 0.58, H = 0.99, I = 0.57, J = 0.81, K = 0.6, 
L = 0.55, M = 0.4, N = 0.99, O = 0.6, P = 0.75, Q = 0.93, 
R = 0.77), .Names = c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R"), row.names = "dat", class = "data.frame") 

和我有一個標誌,我想用於顏色編碼。所以我試過

col_code=c(1,1,1,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0) 
cols = c("red","blue")[col_code+1] 
barplot(as.matrix(x),col=cols) 

然而,這會創建一個單一的純色(不管第二種顏色是什麼)。我不能爲了我的生活而說出我在這裏做什麼和解決我發現的這個問題的其他10個指南中的解決方案之間的區別,如果有人在這裏可以指向我,我會非常感激。在正確的方向。

+0

'col_flag'和'col_code'應該是同一件事嗎? – G5W

+0

是的,我的錯誤。 Eumenedies編輯它是正確的。感謝您指出了這一點。 – boolbarty

回答

0

barplot函數可以非常明確地處理矩陣。如果你閱讀幫助?barplot你會看到:

如果高度是一個矩陣,旁邊是假,那麼劇情的每一欄對應於高度的柱,與值列給出的堆疊高度子酒吧組成酒吧。如果高度是矩陣,旁邊是TRUE,那麼每列中的值是並列的而不是堆疊的。

這是什麼意思,是矩陣是用來創建堆疊barlines,每列是一個新的酒吧,每行是一個堆疊子部分。所以,當你設置col參數時,你實際設置的是順序堆疊子條的顏色。如果大家有更多的行添加到您的矩陣,你會看到的東西,看起來有點像 coloured stacked barplot

你想要的是設置beside = TRUE

barplot(height = as.matrix(x), col = cols, beside = TRUE) 

,或者使用一個載體,而不是一個矩陣,即

barplot(height = as.vector(t(x), col = cols) 

爲了讓圖像:

correctly coloured barplot

或者,你可以使用ggplot來製作圖表

+0

謝謝!這非常有幫助。我無法理解我是如何在沒有錯誤的情況下獲得這種行爲的(即紅色在哪裏?),但您的解釋和示例非常明確。我使用了'旁邊的'語法,因爲它保留了列標籤,而沒有更多的數據結構。再次感謝,我非常感謝你的幫助。 – boolbarty