gpt4 book ai didi

r - 如何使用 ggplot2 制作 3 个离散值的热图?

转载 作者:行者123 更新时间:2023-12-05 08:43:32 25 4
gpt4 key购买 nike

我对 aes 参数有疑问;不确定它试图告诉我要修复什么。

我的数据框是这样的:

> qualityScores

Test1 Test2 Test3 Test4 Test5
Sample1 1 2 2 3 1
Sample2 1 2 2 3 2
Sample3 1 2 1 1 3
Sample4 1 1 3 1 1
Sample5 1 3 1 1 2

其中 1 代表通过,2 代表警告,3 代表失败。

这是我数据的dput:

structure(list(Test1 = c(1L, 1L, 1L, 1L, 1L), Test2 = c(2L, 2L, 
2L, 1L, 3L), Test3 = c(2L, 2L, 1L, 3L, 1L), Test4 = c(3L, 3L,
1L, 1L, 1L), Test5 = c(1L, 2L, 3L, 1L, 2L)), .Names = c("Test1",
"Test2", "Test3", "Test4", "Test5"), class = "data.frame", row.names = c("Sample1",
"Sample2", "Sample3", "Sample4", "Sample5"))

我正在尝试使用 ggplots2 制作一个热图,其中 1 将由绿色表示,2 由黄色表示,3 由红色表示。

这是我的代码:

samples <- rownames(qualityScores)
tests <- colnames(qualityScore)
testScores <- unlist(qualityScores)

colors <- colorRampPalette(c("red", "yellow", "green"))(n=3)

ggplot(qualityScores, aes(x = tests, y = samples, fill = testScores) ) + geom_tile() + scale_fill_gradient2(low = colors[1], mid = colors[2], high = colors[3])

我收到此错误消息:

Error: Aesthetics must either be length one, or the same length as the dataProblems:colnames(SeqRunQualitySumNumeric)

我哪里错了?

谢谢。

最佳答案

如果您将数据从宽格式 reshape 为长格式,这会容易得多。有很多方法可以做到这一点,但在这里我使用了 reshape2

library(reshape2); library(ggplot2)

colors <- c("green", "yellow", "red")

ggplot(melt(cbind(sample=rownames(qualityScores), qualityScores)),
aes(x = variable, y = sample, fill = factor(value))) +
geom_tile() +
scale_fill_manual(values=colors)

enter image description here

关于r - 如何使用 ggplot2 制作 3 个离散值的热图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28307666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com