2

我想使用包 directlabels 来标记我的情节。但是,我希望标签是每个点的 ID。真的没有办法选择要标记的因素还是我错过了?

library(ggplot2)
library(directlabels)
df <- structure(
    list(id = 1:10,
         group = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L),
         .Label = c("A", "B"),
         class = "factor"),
         value1 = c(4, 1, 6, 2, 5, 7, 3, 2, 5, 8),
         value2 = c(6, 2, 6, 2, 8, 9, 7, 5, 2, 6)
         ),
.Names = c("id", "group", "value1", "value2"),
row.names = c(NA, -10L),
class = "data.frame")

p1 <- ggplot(df, aes(x=value1, y=value2)) + geom_point(aes(colour=group))
direct.label(p1)

在此处输入图像描述

4

2 回答 2

5

检查最后调用的节目的代码。direct.label.ggplot()geom_dl()此功能需要美学映射和定位方法。默认使用的定位方法是的返回值default.picker("ggplot"),它使用调用堆栈检查,在你的情况下相当于调用defaultpf.ggplot("point",,,)。以下对我有用:

p1 <- ggplot(df, aes(x=value1, y=value2)) +
  geom_point(aes(colour=group)) +
  geom_dl(aes(label = id), method = defaultpf.ggplot("point",,,))
p1

阴谋

(请注意,您不再需要打电话direct.label()了。)

包的文档directlabels确实有点稀缺。

于 2015-09-30T09:48:55.447 回答
1

您必须编写一个自定义位置方法,如下所示:

label_all <- list( dl.trans(x = x + 0.5, y = y + 0.5), # shift every point up and right
                   gapply.fun(d) ) # include all points
direct.label(p1, method = label_all)

在此处输入图像描述

对于另一个示例,请参阅“将定位方法指定为列表”下的文档。

于 2015-09-30T09:47:34.017 回答