[英]R ggplot geom_tile - How to get a larger range of colors?
当您有一个倾斜的分布时,您需要转换您的数据以获得足够的对比度。 请记住,如果您的计数中有 40% 为 1,则无论转换如何,它们都将保持相同的颜色。 但是,如果您提到了一些高数字并且您没有转换数据,则 2、4 等的计数将显示为与您的 1 相同的颜色。 对于左偏态或右偏态分布有不同的技术。 可以在这里找到有趣的阅读: http://fmwww.bc.edu/repec/bocode/t/transint.html
常见的转换包括log10
(或其他基数)、 sqrt
、 1 / n
等或它们的组合。
这是一个带有 n 的示例,默认情况下会产生或多或少的黑色斑点图,并进行一些转换以创建更多“对比度”
例子
dt <- data.frame(
x = sample(1:40, 100, replace = T),
y = sample(1:40, 100, replace = T),
n = c(rep(c(1:10 %o% 10^(1:7)), 5), sample(1:20, 50, replace = T))
)
ggplot(dt, aes(x, y, fill = n)) + geom_tile()
ggplot(dt, aes(x, y, fill = sqrt(n))) + geom_tile()
ggplot(dt, aes(x, y, fill = log10(n))) + geom_tile()
ggplot(dt, aes(x, y, fill = log(n, 100))) + geom_tile()
ggplot(dt, aes(x, y, fill = sqrt(log(n, 100)))) + geom_tile()
我通常使用 pheatmap function 但你的肯定也可以。 在此示例中,我使用brewer.pal()
function 来获取 colors 的调色板,但如果您知道颜色代码,您可以创建自己的调色板。 这个 function 的 output 只是一个字符向量,带有您选择的颜色代码。
require(pheatmap)
require(RColorBrewer)
P <- brewer.pal(9,"Blues")
pheatmap(as.matrix(dataframe), scale = "none", color=brewer.pal(9,"Blues"),
treeheight_row = 0,treeheight_col = 0,
main = "title")
例如,我经常使用的这个调色板是用 19 colors 代替,它提供了更大的多样性!
palette <- c('#E0FFFF', '#B0E0E6', '#FFFACD', '#FFFF00',
'#FFD700', '#FFA500', '#FF8C00', '#FF7F50', '#DAA520',
'#B8860B', '#B8860B', '#FA8072','#FF6347', '#FF4500',
'#DC143C', '#B22222', '#A52A2A', '#8B0000', '#800000')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.