R 使用ggplot2中的两个不同因子定义col和bg的颜色
我试图在3代人中展示13个不同程序的敏感性和选择性的变化。以下是程序1和2的数据,例如:R 使用ggplot2中的两个不同因子定义col和bg的颜色,r,colors,plot,ggplot2,R,Colors,Plot,Ggplot2,我试图在3代人中展示13个不同程序的敏感性和选择性的变化。以下是程序1和2的数据,例如: Sensitivity Selectivity Program Generation 0.317 0.347 1 1 0.282 0.301 2 1 0.496 0.118 1 2 0.339 0.176 2 2 0.525 0.050 1
Sensitivity Selectivity Program Generation
0.317 0.347 1 1
0.282 0.301 2 1
0.496 0.118 1 2
0.339 0.176 2 2
0.525 0.050 1 3
0.397 0.131 2 3
我想要一个散点图,用线连接给定程序的点(每个程序3个点,每一代一个点),每个程序有不同的颜色,点的轮廓颜色与该程序的线相同,但填充由代定义
一些点对非常接近,生成点最终会重叠一点,因此,如果将点轮廓和填充映射在一起,而不是为程序创建一个层并为生成覆盖另一个层,则会更清晰。所以我使用一个可以定义轮廓和填充的形状(pch=21)。我越来越接近于我想要的情节:
dataset=read.csv("10cmpds_mammal_mean_allgens.csv",h=T)
Generation<-factor(dataset$Generation)
Program<-factor(dataset$Program)
ggplot()+
geom_line(data=dataset,aes(x=Sensitivity,y=Selectivity,color=factor(Program)),size=1)+
geom_point(data=dataset, aes(x=Sensitivity, y=Selectivity, color=factor(Program)), pch=21, col=factor(Program), bg=factor(Generation),size=6)+
scale_color_manual(name="", values=c("#D42515","#D49A95","#DD7310","#F0CD1E","#0FB135","#0B78CC","#679EC9","#353535","#505050","#7B7A7C","#B4B4B4","#8348CF","#A787D1"))
如果可能的话,我仍然希望在ggplot2中生成此图,以便该图可以轻松匹配其他图的样式 我想你想要
ggplot(data = dataset,
aes(x = Sensitivity, y = Selectivity,
color = factor(Program),
fill = factor(Generation),
group = factor(Program)))+
geom_line(size = 1) +
geom_point(shape = 21, size = 6) +
scale_color_manual(name = "",
values = c("#D42515", "#D49A95", "#DD7310",
"#F0CD1E", "#0FB135", "#0B78CC",
"#679EC9", "#353535", "#505050",
"#7B7A7C", "#B4B4B4", "#8348CF", "#A787D1")) +
scale_fill_manual(values = c("bisque", "grey", "black"))
如果在原始的ggplot()
调用中指定美学映射(以及数据),则无需在后续层中重复这些映射。我在填充中使用了与在颜色中相同的颜色,这可能是一个糟糕的选择,但您可以将它们更改为正确的数字/值
同样值得指出的是,像“pch”和“bg”这样难以记忆的首字母缩略词在ggplot中是毫无意义的。“pch”替换为形状
,“bg”替换为填充
(“col”替换为颜色
)
我还添加了HitePastimProvesReadability
使用您在问题中提供的数据,可以得出以下曲线图
谢谢Gregor,但这似乎无法解决问题。问题是我需要13种不同的线条/轮廓颜色(每个程序一种),但只有3种不同的填充颜色(每一代一种)。因此,在给定的程序行中,将有3个点,每个点都有一个唯一的颜色来表示第1、2或3代。请立即尝试。我还没有看到你在顶部指定只有3代人。您只需使
fill
scale中的值数量等于所需值的数量。我切换到了你编辑的颜色。啊,就是这样。非常感谢。
ggplot(data = dataset,
aes(x = Sensitivity, y = Selectivity,
color = factor(Program),
fill = factor(Generation),
group = factor(Program)))+
geom_line(size = 1) +
geom_point(shape = 21, size = 6) +
scale_color_manual(name = "",
values = c("#D42515", "#D49A95", "#DD7310",
"#F0CD1E", "#0FB135", "#0B78CC",
"#679EC9", "#353535", "#505050",
"#7B7A7C", "#B4B4B4", "#8348CF", "#A787D1")) +
scale_fill_manual(values = c("bisque", "grey", "black"))