我在制作我认为应该是一个相当简单的 ggplot2 图时遇到了一些麻烦。
我在数据框中有一些实验数据。每个数据条目都由正在测量的系统和运行它的实例(问题)标识。每个条目还具有针对特定系统和实例测量的值。
例如:
mydata <- data.frame(System=c("a","b","a","b","a","b"), Instance=factor(c(1,1,2,2,3,3)), Value=c(10,5,4,2,7,8))
现在,我想将此数据绘制在箱线图中,其中 x 轴包含实例标识符,条形图的颜色表示该值适用于哪个系统。条形高度应按数据框中的值加权。
这几乎可以满足我的要求:
qplot(data=mydata, weight=Value, Instance, fill=System, position="dodge")
我想做的最后一件事是重新排序条形图,以便它们按系统 A 的值排序。但是,我想不出一个优雅的方法来做到这一点。
我的第一直觉是使用qplot(data=mydata, weight=Value, reorder(Instance, Value), fill=System, position="dodge")
,但这将按mean
每个实例的值排序,我只想使用 A 中的值。我可以用qplot(data=mydata, weight=Value, reorder(Instance, Value, function(x) { x[1] } ), fill=System, position="dodge")
“第一个值”对实例进行排序,但这很危险(如果顺序改变了?)并且读者不清楚。
什么是更优雅的解决方案?