R ggplot2:stat_ellipse和具有几个唯一值的类别变量的颜色

时间:2019-02-07 03:13:12

标签: r ggplot2

我有一个类似于以下内容的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))

test plot

关于此情节,我想更改两件事,但被卡住了:

  1. 由于每个组对应的数字都显示为标签(例如1、2、3),因此我真的不需要将每个组对应的椭圆按组进行颜色编码。有没有办法对stat_ellipse描述的椭圆使用单一颜色?

  2. 我的真实数据具有许多特质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还原为没有足够的唯一颜色。

0 个答案:

没有答案