ggplot中scale_fill_viridis_c()无法修改点颜色的原因及解决
问题原因
- 你代码里的
geom_point用color映射控制点的颜色,但scale_fill_viridis_c()管的是填充色(比如柱状图内部、密度图区域的颜色),和点的color参数不搭边,所以调这个函数的参数完全不会影响点的颜色。 - 另外,
e2f_F8HET@active.ident是Seurat对象的聚类标识,属于离散型分组,而scale_fill_viridis_c()里的c代表连续型(continuous),本身就和离散变量不匹配。
解决办法
根据变量类型替换对应的颜色比例尺:
- 针对离散聚类分组(绝大多数场景),用离散版的viridis颜色比例尺:
F8HET <- ggplot(F8HET_phate) + geom_point(aes(PHATE1, PHATE2, color = e2f_F8HET@active.ident)) + labs(color = "Cluster") + scale_color_viridis_d() + # 替换成离散型颜色比例尺 ggtitle("F8HET")
- 如果你的变量是连续数值型(很少用active.ident的情况),就用对应连续版的颜色比例尺:
F8HET <- ggplot(F8HET_phate) + geom_point(aes(PHATE1, PHATE2, color = e2f_F8HET@active.ident)) + labs(color = "Cluster") + scale_color_viridis_c(option = "magma") + # 这里调整参数会生效 ggtitle("F8HET")
内容的提问来源于stack exchange,提问作者WantaghMomma
相关产品推荐
相关产品推荐

