【发布时间】:2019-06-17 14:33:36
【问题描述】:
我正在尝试使用 ggplot2 制作箱线图,我想同时显示平均值和中位数。当我将 y 轴转换为负 log 10 时,图上显示的平均值发生了变化(X2 和 X3 被翻转)并且它们不正确。
这是我的代码:
x <- read.table("stackoverflow.txt", sep="\t", header=T)
library(tidyr)
y <- x %>% gather(key, value, 2:6)
library(ggplot2)
z <- ggplot(y, aes(x = key, y = -log10(value), color = key)) +
geom_boxplot() +
theme_bw() +
theme(axis.text.x = element_text(angle = 90, hjust = 1),
axis.text = element_text(size = 12),
axis.title = element_text(size = 14, face = "bold")) +
labs(x = "" , y = "-Log10(T)") +
coord_cartesian(ylim = c(6, 13)) +
scale_y_continuous(breaks = seq(6, 13, 2))
z + stat_summary(fun.y = mean, geom = "point", shape = 18, size = 3,
show.legend = TRUE, color = "black") +
geom_point(aes(shape = "mean"), alpha = 0) +
guides(shape = guide_legend(title = NULL, override.aes = list(alpha = 1)))
means <- aggregate(value ~ key, y, mean)
means
key value
1 X1 1.142106e-09
2 X2 1.038333e-09
3 X3 7.831222e-10
4 X4 1.216502e-09
5 X5 1.321300e-09
我使用的文件是制表符分隔的
Ratio 1 2 3 4 5
0.01 1.56E-13 1.09E-13 1.22E-11 2.22E-12 1.79E-11
0.02 3.98E-11 8.89E-12 2.59E-11 2.93E-11 4.88E-11
0.03 1.96E-10 1.00E-10 1.02E-10 1.05E-10 1.90E-10
0.04 4.98E-10 2.46E-10 3.89E-10 6.68E-10 4.83E-10
0.05 7.35E-10 8.30E-10 6.59E-10 9.14E-10 9.62E-10
0.06 1.18E-09 1.25E-09 1.01E-09 1.51E-09 1.68E-09
0.07 2.05E-09 1.77E-09 1.48E-09 2.13E-09 2.13E-09
0.08 2.48E-09 2.39E-09 1.64E-09 2.62E-09 3.05E-09
0.09 3.10E-09 2.75E-09 1.73E-09 2.97E-09 3.33E-09
【问题讨论】:
-
(1) 请学习如何better format你的问题,这样更容易阅读。 (2) 我强烈建议您将"accept" answers 转至您的previous questions;这样做不仅为回答者提供了一些积分,而且还为有类似问题的读者提供了一些关闭。虽然您只能接受一个答案,但您可以选择对您认为有帮助的人投票。