R 为美学价值添加映射的有效方法

R 为美学价值添加映射的有效方法,r,ggplot2,R,Ggplot2,作为对的扩展,我使用eipi10建议的方法生成了绘图 valsToKeep <- c("D_1","D_4") n <- length(valsToKeep) getPaletteDark = brewer.pal(8,"Dark2") colSel <- sample(getPaletteDark,n) ggplot(df %>% mutate(Val=fct_other(Val,keep=valsToKeep)) %>%

作为对的扩展,我使用eipi10建议的方法生成了绘图

valsToKeep <- c("D_1","D_4")
n <- length(valsToKeep)
getPaletteDark = brewer.pal(8,"Dark2")
colSel <- sample(getPaletteDark,n)

ggplot(df %>% 
         mutate(Val=fct_other(Val,keep=valsToKeep)) %>% 
         arrange(Val) %>% 
         filter(!duplicated(.[,c("X","Y")])), 
       aes(X,Y,col=Val)) + 
  geom_point() +
  scale_colour_manual(values=c(colSel,"grey70")) +
  theme_bw() 


但是,它没有获取所需的输出(将
其他
点的透明度降低到空心圆)

必须在美学映射中指定
alpha=Val
&
shape=Val

我还将shape的值范围从
c(rep(1,n),1)
更改为
c(rep(1,n),2)
,因此前两个值和其他值之间存在差异

ggplot(df %>% 
         mutate(Val=forcats::fct_other(Val,keep=valsToKeep)) %>% 
         arrange(Val) %>% 
         filter(!duplicated(.[,c("X","Y")])), 
       aes(X,Y,col=Val,alpha=Val,shape=Val)) + 
  geom_point(size = 3) +
  scale_colour_manual(values=c(colSel,"grey70")) +
  scale_alpha_manual(values = c(rep(1,n),0.2)) +
  scale_shape_manual(values = c(rep(1,n),2)) +
  theme_bw() 


(为了提供信息,我使用的原始颜色是红色和蓝色,因为对深色调色板的采样使我几乎无法辨别深绿色和深蓝色……

我希望形状和alpha的值与
Val
中的值相同。这些更改仅适用于
其他
点。@Prradep编辑了我的答案。顺便说一句,改变alpha值不会使点空洞化。如果您想要实心圆与空心圆,可以在比例形状中使用
values=c(rep(16,n),1)
。是的,谢谢。我注意到了错误并应用了您的解决方案。现在将编辑问题。
ggplot(df %>% 
         mutate(Val=forcats::fct_other(Val,keep=valsToKeep)) %>% 
         arrange(Val) %>% 
         filter(!duplicated(.[,c("X","Y")])), 
       aes(X,Y,col=Val,alpha=Val,shape=Val)) + 
  geom_point(size = 3) +
  scale_colour_manual(values=c(colSel,"grey70")) +
  scale_alpha_manual(values = c(rep(1,n),0.2)) +
  scale_shape_manual(values = c(rep(1,n),2)) +
  theme_bw()