我有一个数据框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")
但是这不起作用,因为颜色渐变不适用于标签-它像对待单独的数据框一样对待它(这样标签只会获得最低的颜色)。如何使标签遵循以前的颜色渐变?
答案 0 :(得分:0)
我通常要做的是:为标签创建单独的列,因此可以通过将其名称传递给ggplot来自定义每个点。将其设置为您想要的,其余部分留空“”