【发布时间】:2018-06-13 18:41:22
【问题描述】:
我正在尝试绘制一个堆叠条,其中级别的顺序由一列定义,颜色由另一列定义。
我读取了一个 csv 文件,数据框包含以下列:
- 方法(字符)
- 属性(字符)
- 顺序(整数)
- Success (double):Success 是“y”轴,Method 是“x”轴。
数据
我的数据框的一个子集是:
Method <- c("MF", "MF", "MF", "MF", "MF", "MF", "RF", "RF", "RF", "RF", "RF", "RF")
Property <- c("P1","P2","P3","P6","P5","P7","P1","P6","P2","P5","P4","P7")
Order <- c(1,2,3,4,5,6,1,2,3,4,5,6)
Success <- c(87.612,4.583,0.286,6.122,0.788,0.573,87.612,6.409,4.332,0.895,0.0,0.573)
REF01 <- data.frame(Method, Property, Order, Success)
Success 是 Order 列之后的增量列。例如,前 3 个属性(P1、P6 和 P2)的方法 RF 的成功率为 (87.612 + 6.409 + 4.332)。
期望的结果
我需要根据 Order 列为每个 Method 堆叠 Success,但我想根据 Property 进行着色 列。我在 Excel 中手动绘制了我希望在这个小示例中看到的内容。
下图显示蓝色(P1)是这两种方法的第一个属性。每种方法的第二个属性都不同。 P2(棕色)是MF的第二个,RF的第三个,而P6(黄色)是RF的第二个,MF的第四个。因此,MFbar 颜色如下:蓝色、棕色、灰色(RF 中不存在的属性、黄色和深蓝色。RF 条颜色如下:蓝色、黄色、棕色、蓝色和绿色)
有没有办法绘制这个?我感谢您的帮助。
我也忘了写我用的是ggplot2,但我知道代码很简单。
p <- ggplot(REF01, aes(x=Method, y=Success)) +
geom_bar(aes(fill = Property) , stat = "identity")
【问题讨论】: