R数据可视化,使用RColorBrewer为20个变量添加颜色



我正在尝试使用ggplot2可视化数据,并将20种不同的颜色添加到我在"描述";。如果没有这些颜色,脚本就可以完美地工作(只有黑色(。然而,无论如何,我想添加颜色,它要么保持黑色,要么使用下面的脚本,我会得到以下错误:Error: Aesthetics must be either length 1 or the same as the data (2265723): colour这应该不是问题,因为";Pastel1";有255种颜色,我创建了一个长度变量。

数据集(描述有20个类别(:

chr pos p description
1 445578 0.05 Metabolic
3 659990 0.34 Metabolic
5 789689 0.55 Immunological
6 678599 0.05 BodyStructures
7 97890 0.67 Cardiovascular
2 67899 0.01 Hematological
8 9867647 0.34 Nutritional
3 675890 0.55 Environment
6 799030 0.76 Psychiatric
4 8609000 0.88 Cognitive
6 789900 0.12 Musculoskeletal
3 90907878 0.22 Opthalmological
colourCount = length(unique(dataset$description))
getPalette = colorRampPalette(brewer.pal(9, "Pastel1"))
Nean_PheWAS <- ggplot(dataset, aes(x=description, y=-log(p), colour = getPalette(colourCount))) + 
geom_jitter(mapping=aes(x=as.factor(description), y=-log10(p))) +
theme_classic() + 
theme(axis.text.x = element_blank(), 
panel.grid.minor=element_line(colour = "grey", linetype="dashed"), axis.ticks=element_blank()) + 
labs(color="description", size="Effect size", x="Phenotype Classes", y="log(p-value)") +
geom_hline(yintercept=-log(0.01), color="red", size=1, alpha=0.5)

我也对其他解决方案持开放态度,可以为类别添加20种不同的颜色。

假设您希望通过变量description进行着色,则可以通过将scale_colour_manual(values = getPalette(colourCount))添加到ggplot对象来使用具有colourCount数量元素的ColorBrewer调色板。改变美学中的colour = description

colourCount = length(unique(dataset$description))
getPalette = colorRampPalette(brewer.pal(9, "Pastel1"))
Nean_PheWAS <- ggplot(dataset, aes(x=description, y=-log(p), colour = description)) + 
geom_jitter(mapping=aes(x=as.factor(description), y=-log10(p))) +
theme_classic() + scale_colour_manual(values = getPalette(colourCount)) +
theme(axis.text.x = element_blank(), 
panel.grid.minor=element_line(colour = "grey", linetype="dashed"), axis.ticks=element_blank()) + 
labs(color="description", size="Effect size", x="Phenotype Classes", y="log(p-value)") +
geom_hline(yintercept=-log(0.01), color="red", size=1, alpha=0.5)

最新更新