我有一个类似于以下内容的R数据框:
group x y trait1 grp.x grp.y
ind1 3 -1.35155328 2.5388350 A -1.1778170 2.2361359
ind2 3 -1.38344150 2.1475588 B -1.1778170 2.2361359
ind3 3 -1.38859652 2.4959691 B -1.1778170 2.2361359
ind4 2 -0.09222147 -1.6956082 A -0.8312698 -1.1864784
ind5 2 -0.51072944 -0.4015302 B -0.8312698 -1.1864784
ind6 3 -1.33953852 2.3398774 B -1.1778170 2.2361359
ind7 3 -1.33566078 1.7296098 B -1.1778170 2.2361359
ind8 2 -0.58546568 -0.6147354 C -0.8312698 -1.1864784
ind9 2 -0.76524417 -0.9873662 C -0.8312698 -1.1864784
ind10 2 -0.01614503 -1.4883271 C -0.8312698 -1.1864784
ind11 1 7.37664013 -1.5121731 D 7.5796202 -0.7459455
ind12 1 5.69439899 0.1074283 D 7.5796202 -0.7459455
ind13 1 6.83721986 -0.9119275 D 7.5796202 -0.7459455
ind14 1 9.66081076 -1.7497733 D 7.5796202 -0.7459455
ind15 1 7.31749818 -1.3984597 E 7.5796202 -0.7459455
此数据框包含聚类分析的结果,并且每一行对应一个单独的样本。对于每个个体,我都有组分配(组)的值,个体的xy坐标(x,y),特定特征(trait1)的值以及每个组的质心的xy坐标(grp.x,grp)。 y)。
我已使用以下代码使用ggplot2创建以下图:
ggplot(data) +
geom_point(aes(x=x, y=y, color=trait), size=1.5) +
stat_ellipse(aes(x=x, y=y, color=group), type="norm", level=0.6) +
geom_point(mapping = aes(x=grp.x, y=grp.y), shape=17, cex=0.75) +
geom_segment(aes(x=grp.x, y=grp.y, xend=x, yend=y), lwd=0.25) +
geom_label(aes(x=grp.x, y=grp.y, label=group))
关于此情节,我想更改两件事,但被卡住了:
由于每个组对应的数字都显示为标签(例如1、2、3),因此我真的不需要将每个组对应的椭圆按组进行颜色编码。有没有办法对stat_ellipse描述的椭圆使用单一颜色?
我的真实数据具有许多特质1的唯一值(而不是此处显示的5个唯一值),因此我想创建一个发散颜色的调色板来填充各个点,但是我我不确定我是否正确创建了一个调色板,并且该调色板应该在我的代码中实现(特别是在问题1的上下文中)。
我尝试了以下操作:
cols = colorRampPalette(brewer.pal(11,"Spectral"))(65)
ggplot(data) +
geom_point(aes(x=x, y=y, color=trait), size=1.5) +
stat_ellipse(aes(x=x, y=y, color=group), type="norm", level=0.6) +
geom_point(mapping = aes(x=grp.x, y=grp.y), shape=17, cex=0.75) +
geom_segment(aes(x=grp.x, y=grp.y, xend=x, yend=y), lwd=0.25) +
geom_label(aes(x=grp.x, y=grp.y, label=group)) +
scale_color_brewer(palette=cols)
但是,对于未知的调色板类型,我会收到一条错误消息(我必须创建和/或错误地调用了我的调色板),并且默认的颜色调制器调色板R还原为没有足够的唯一颜色。