如何在跟随geom_point的颜色渐变的geom_point图中使用geom_label标记一个点?

时间:2019-04-09 18:21:44

标签: r ggplot2

我有一个数据框df,其中有3个实值列a,b,c和一个字符串列d。我正在创建一个二维绘图,其中列c的颜色编码如下:

ggplot(df, aes(x=a, y=b, color=c)) +
geom_hline(yintercept=0, linetype=2) +
geom_vline(xintercept=0, linetype=2) +
geom_point(size=.5) +
geom_density2d(color="black", alpha=.5) +
scale_color_gradient2(name="col", low="#0000ff", mid="#f7f7f7", high="#a80000", breaks=c(-2, 0, +2))

现在,我想根据上面的内容创建一个单独的图,在这里我仅标记一个点(使用我知道的索引),所以我添加了geom_label,并希望标签框的填充具有适合的颜色那一点(数据框中的一行):

ggplot(df, aes(x=a, y=b, color=c)) +
geom_hline(yintercept=0, linetype=2) +
geom_vline(xintercept=0, linetype=2) +
geom_point(size=.5) +
geom_density2d(color="black", alpha=.5) +
scale_color_gradient2(name="col", low="#0000ff", mid="#f7f7f7", high="#a80000", breaks=c(-2, 0, +2)) +
geom_label(data=df['x'], aes=(x=a, y=b, fill=c, label=d), 
fontface="bold", show.legend=F, color="black")

但是这不起作用,因为颜色渐变不适用于标签-它像对待单独的数据框一样对待它(这样标签只会获得最低的颜色)。如何使标签遵循以前的颜色渐变?

1 个答案:

答案 0 :(得分:0)

我通常要做的是:为标签创建单独的列,因此可以通过将其名称传递给ggplot来自定义每个点。将其设置为您想要的,其余部分留空“”