我正在尝试创建一个水平堆叠条形图,以可视化在一系列值上表现最佳的模型之间的转换。我遇到问题的一点是,我希望我的值轴(最初是 y,但我用 coord_flip() 将其翻转到 x)是一个对数刻度,这样 0.25 是我的下限,1 在中间, 4是我的上限。我想保持模型和轴值之间的转换之间的对应关系。
这是我的数据
stock.best<-c("ESTU","ESTU","ESTU","ESUM","ESUM","ESUM","SUMM","LLAT","LLAT","LLAT")
model.best<-c("D","T","Q","D","TQ","T","TQ","D","R","Q")
value.best<-c(1.18166,0.15034,2.668,0.6771123,1.408938,1.91395,4,0.2966743,1.143973,2.559352)
ALF.best<-data.frame(stock.best,model.best,value.best)
ALF.best$stock.best <- factor(ALF.best$stock.best, levels = c("LLAT", "SUMM", "ESUM", "ESTU"))
ALF.best$model.best <- factor(ALF.best$model.best, levels = c("D", "TQ", "T", "R","Q","NMA"))
以及我对条形图的最佳尝试。
qplot(stock.best, data=ALF.best, geom="bar", weight = value.best, fill=factor(model.best), xlab="", ylab="UH:UE ratio")
+ scale_y_continuous(breaks = c(0.25,0.5,0.75,1,2,3,4)) + coord_flip()
这个图几乎是完美的,我的模型转换与轴上的正确值对齐。例如,在 ESTU 因子中,从模型 D 到模型 T 的转变发生在 1.18。但是,我希望我的轴在 0.25 和 1 之间具有与 1 和 4 相同的间距。我可以通过制作两个图形来人工获得它,一个是 coord_flip(ylim = c(0.25,1)),另一个是 coord_flip(ylim = c(1,4)) 并将它们彼此相邻粘贴,但是如果不使用 powerpoint 魔法就可以了。