【发布时间】:2021-01-05 14:26:44
【问题描述】:
我正在构建一个对数刻度的条形图:
library(ggplot2)
library(scales)
data <- matrix(c("2%","A", 0.00013, 4.94e-06, "6%", "A", 1.7e-05, 7.95e-06, "2%", "B", 3.1e-06, 1.50e-07, "6%", "B", 6.8e-07, 5.04e-07), ncol=4, byrow=TRUE)
data <- as.data.frame(data); colnames(data) = c("P", "variable", "value", "sd")
data$value <- as.numeric(as.character(data$value)); data$sd <- as.numeric(as.character(data$sd))
plot <- ggplot(data=data, aes(x=P, y=value, fill=variable)) + geom_bar(stat="identity", color = "black", size = 1, width = 0.5, position = position_dodge()) +
scale_x_discrete(limits=c("2%", "6%")) + scale_y_log10(breaks = trans_breaks("log10", function(x) 10^x)) +
geom_errorbar(aes(ymin=value, ymax=sd), size=1, width=0.25, position=position_dodge(0.5))
plot
但是,我的数据类型通常在我的领域中以不同的方式表示。我需要创建相同的直方图,但条形图将从 x 轴的另一侧开始,就在 x 轴标签上方,如下所示:
我知道这样表示它并没有什么意义,但我必须这样做(因为我想表明 A 实际上比 B 做得更好,这在第一眼看第一张图)。也许使用 ggplot2 根本不可能,因为这不符合 ggplot2 的逻辑?
【问题讨论】: