多色条形图的问题

时间:2017-04-09 21:08:16

标签: r

我正在尝试为条形图上色,而不能为我的生活弄清楚我做错了什么。我的数据看起来像

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个指南中的解决方案之间的区别,如果有人在这里指点我,我真的很感激在正确的方向。

1 个答案:

答案 0 :(得分:0)

server { listen 80; listen [::]:80; server_name www.example.com example.com; return 301 https://www.example.com$request_uri; } 函数非常具体地处理矩阵。如果您阅读帮助barplot,您会看到:

  

如果高度是矩阵而旁边是FALSE,则图的每个条对应于一列高度,列中的值给出构成条的堆叠子条的高度。如果height是一个矩阵,而旁边是TRUE,那么每列中的值是并置的而不是堆叠的。

这意味着,矩阵用于创建堆叠条形图,每列是一个新条形,每一行都是一个堆叠的子区域。因此,当您设置?barplot参数`时,您实际设置的是顺序堆叠的子条的颜色。如果你在矩阵中添加更多行,你会看到类似的东西 coloured stacked barplot

您想要的是设置col

beside = TRUE

或使用向量,而不是矩阵,即

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

提供图片:

correctly coloured barplot

或者,您可以使用ggplot制作图表