在ggplot中更改一个变量的颜色

时间:2015-12-09 00:22:37

标签: r ggplot2

我有一个数据框

> head(sample_data_df)

             Gene_1     Gene_2      Gene_3     Gene_4     Gene_5
Sample_1 -1.1698306  1.2408295  1.42964624 -0.2323205  0.1669285
Sample_2 -0.6983788 -0.9224843  2.21307158 -0.3003344 -0.5299774
[...]

我融化了

sample_data_melt <- melt(sample_data_df)

  variable      value
1   Gene_1 -1.1698306
2   Gene_1 -0.6983788

并用

绘图
ggplot(sample_data_melt, aes(x=variable,y=value)) + 
  geom_point(position = "jitter")

我想将所有样本的alpha(sample_data_df中的行)更改为0.5,除了一个样本。我知道我可以通过制作像

这样的alpha矢量来为每个点设置不同的
alpha <- rep(0.1,5005)
alpha[seq(0, 5005, by= 1001)] <- 1
ggplot(sample_data_melt, aes(x=variable,y=value)) + 
  geom_point(position = "jitter",alpha = alpha)

但如何将一个特定样本设置为alpha 1?

1 个答案:

答案 0 :(得分:2)

似乎行名称中有价值的信息会在您融化时丢失(样本编号)。我建议保持这个:

sample_data_df$sample = row.names(sample_data_df)
sample_data_melt = melt(sample_data_df, id.vars = "sample")

然后,您可以为要完全不透明的样本设置指标

sample_data_melt$alpha = ifelse(sample_data_melt$sample == "Sample_2", "Sample 2", "Other")

并将其映射到你的情节中的alpha:

ggplot(sample_data_melt, aes(x=variable,y=value)) + 
    geom_point(aes(alpha = alpha), position = "jitter") +
    scale_alpha_manual(values = c(0.5, 1))

(未经测试,因为您的数据不可重复共享,如果您需要测试答案,请使用dput()或模拟数据。)