如何创建带标签的散点图?

How to I create a labelled scatter plot?

我想画一个带标签的散点图,如下图, 在 Gadfly 中。

(来源:http://support.sas.com/documentation/cdl/en/statug/63033/HTML/default/images/renda.png

我该怎么做?

散点图很简单:

using Gadfly
X = [1, 2, 2, 3, 3, 3, 4]
Y = [4, 4, 7, 7, 9, 1, 8]
Labels = ["bill", "susan", "megan", "eric", "fran", "alex", "fred"]

plot(x=X, y=Y)

选项是使用颜色,但这不是很好,因为图例变得很大(特别是在比这更简单的例子中)。

plot(x=X,y=Y, color=Labels)

您可以使用 Compose 注释来做到这一点。

The Gadfly documentation on that is here. 您可能已经从所示的简单示例中错过了它的真正威力。

Using Compose
plot(x=X, y=Y, Guide.annotation(compose(context(), text(X, Y, Labels))))

虽然@Oxinabox 的答案有效,但 Gadfly 的方法是使用 Geom.label,例如

using Gadfly
X = [1, 2, 2, 3, 3, 3, 4]
Y = [4, 4, 7, 7, 9, 1, 8]
Labels = ["bill", "susan", "megan", "eric", "fran", "alex", "fred"]

plot(x=X, y=Y, label=Labels, Geom.point, Geom.label)

这样做有很多好处,包括智能标签放置以避免标签重叠,或者您可以从一些易于使用的规则中进行选择,例如 :centeredbelow。此外,它会从主题中选取 font/font 大小。