我有來自統計測試(基因集豐富分析,但這不重要)的數據,所以我獲得了正態分佈和正態分佈的統計量的p值:操縱scale_fill_gradient2的圖例
該試驗在幾個類別運行:
set.seed(1)
df <- data.frame(col = rep(1,7),
category = LETTERS[1:7],
stat.sign = sign(rnorm(7)),
p.value = runif(7, 0, 1),
stringsAsFactors = TRUE)
我想在geom_tile
ggplot
使得我顏色代碼來呈現這些數據df$category
通過df$p.value
乘以它們df$stat.sign
(即,的符號統計)
對於我第一次拿log10
df$p.value
的:
df$sig <- df$stat.sign*(-1*log10(df$p.value))
然後我order
的df
通過df$sig
爲df$sig:
library(dplyr)
df <- rbind(dplyr::filter(df, sig < 0)[order(dplyr::filter(df, sig < 0)$sig), ],
dplyr::filter(df, sig > 0)[order(dplyr::filter(df, sig > 0)$sig), ])
,然後將每個符號我ggplot
它:
library(ggplot2)
df$category <- factor(df$category, levels=df$category)
ggplot(data = df,
aes(x = col, y = category)) +
geom_tile(aes(fill=sig)) +
scale_fill_gradient2(low='darkblue', mid='white', high='darkred') +
theme_minimal() +
xlab("") + ylab("") + labs(fill="-log10(P-Value)") +
theme(axis.text.y = element_text(size=12, face="bold"),
axis.text.x = element_blank())
這給了我:
有沒有一種方法來操縱legend
使得df$sig
值由它們的絕對值來表示,但一切保持不變?這樣我仍然可以獲得紅色和藍色色調並保持我想要的順序。