ggplot基本格式问题?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ggplot基本格式问题?相关的知识,希望对你有一定的参考价值。
我有一个带有列的大型DF(下面只是一个示例):
Identity: "T4", "T4", "T4", "TNBC", "TNBC, "Control", "Control"
IdentityColor: "red", "red", "red", "blue", "blue", "green", "green"
PC_1和PC_2:具有与上述变量相关的一些值,用于主成分分析。
我只需要一个散点图:1.身份(T4,TNBC和控件)2.对应于组的颜色。3.点周围的黑色边框(Shape = 21)
我认为应该正常工作的代码不起作用,如下所示:
ggplot(DF, aes(PC_1, PC_2, fill=Identity))+
geom_point(shape=21, size=2)+
scale_fill_manual(values=unique(as.character(DF$IdentityColor
但是我得到的图形将颜色分配给错误的组!注意:我无法手动执行此操作,因为对于某些DF,我最多有18组。
答案
是的,这是语法问题,比什么都重要。简而言之,任何values=
命令的scale_
都应视为列表,而不是数据帧。强制将数据框添加到列表的效果并不理想,因此最好显式创建它。例如:
set.seed(12345)
df <- data.frame(
x=1:20,
y=rnorm(20),
grp=sample(c('T4','TNBC','Control'),20,replace=TRUE)
)
color_list <- list("T4"="red", "TNBC"="blue", "Control"="green")
ggplot(df, aes(x=x,y=y,fill=grp)) +
geom_point(shape=21, size=4) +
scale_fill_manual(values=color_list)
EDIT:正如注释中指出的,列表不是严格要求的,但是命名实体对于确保颜色与特定标签相关联很重要。如果在以上示例中将list(
更改为c(
,则其工作原理相同。您也可以提供一个字符向量,但是,根据fill=
美学中的级别顺序将颜色分配为一个因素。您可以在原始示例中利用此优势,方法是创建一个字符矢量,该字符矢量根据填充美学的级别正确设置排序。
以上是关于ggplot基本格式问题?的主要内容,如果未能解决你的问题,请参考以下文章