ggplot2散点图和标签

时间:2013-07-24 02:26:19

标签: r graph plot ggplot2 label

我正在尝试使用ggplot2库生成散点图。我的数据框(称为scatterPlotData)采用以下形式:

115 2.3
120 1.6
.
.
.
132 4.3

(......表示许多其他类似的值)。基本上,是一个2列数据帧。我也有标签与每个点一起。首先,我遇到了散点图本身的问题。我正在使用以下代码:

p <- ggplot(scatterPlotData, aes("Distance (bp)", "Intensity"))
p + geom_point()

但是,使用上面的代码,我得到以下图:

enter image description here

显然,这不是散点图。所以,如果有人能指出我做错了什么,我会非常乐于助人。

其次,这是关于标签的。我将有许多数据点,存在重叠数据点的风险。我应该如何使用ggplot为每个点添加标签?另外,states我可以使用 directlabels 包来获得使用不同颜色的良好重叠免费标记散点图,但是,我不确定如何使用{{ 1}}因为我没有找到关于直接标签ggplot一起使用的任何文件。

非常感谢任何(或两个)问题的帮助 - 谢谢。

2 个答案:

答案 0 :(得分:3)

丢失引号,当你正在制作文本值的图表时...再看一遍,你的变量名(Distance (bp))中的括号会有问题。将其更改为不带括号的内容,然后在没有引号的情况下进行ggplot调用:

#Assuming Distance (bp) is the first column
names(scatterPlotData)[1] <- "Distance"
p <- ggplot(scatterPlotData, aes(Distance, Intensity) + geom_point()

对于不重叠的标签,这是一个棘手的问题,有很多关于SO的讨论 - 我想你不会从这里一个模糊的问题得到很好的回答。

答案 1 :(得分:2)

首先,如果您提供了一个可重复的示例精确地描述了您的数据,那将会更有帮助。

您不应该在引号中的aes中传递变量名称。我不确定你从哪里得到的,没有一个例子可以让我想到的任何人都这样做(除非他们使用aes_string专门用于那种情况)。

然而,您似乎有一个笨拙的变量名称,即Distance (bp)。这是非标准的,不推荐使用。名称中不应包含空格。最好的办法是将该列重命名为合理的列,然后执行以下操作:

p <- ggplot(scatterPlotData, aes(x = Distance_bp,y = Intensity))
p + geom_point()

如果您不重命名该列,则可能会

p <- ggplot(scatterPlotData, aes(x = `Distance (bp)`,y = Intensity))
p + geom_point()

请注意,这些是反引号,而不是单引号。

对于重叠数据,我建议您阅读herehere