2

我对 ggplot2 比较陌生,在为我的轮廓添加适当的标签时遇到了麻烦。我希望能够在没有 directlabels 包的情况下添加标签,但我还没有找到一种方法,所以如果你知道一种在没有 directlabels 的情况下自定义标签的方法,我很乐意在这里。

使用经典的火山示例,我可以通过以下方式使用 directlabels 数据包将标签添加到默认等值线图:

library(plyr)
library(ggplot2)
library(directlabels)
library(reshape)
volcano<-melt(volcano)
v<-ggplot(volcano, aes(x,y,z=z))
e<-v + stat_contour(aes(colour=..level..))
direct.label(e)

在上面的例子中,标签被适当地添加了,但是如果我尝试为轮廓指定我自己的断点,事情会变得更加复杂:

e<-v + stat_contour(aes(breaks=c(160, 170, 180), colour=..level..))
direct.label(e)

现在,轮廓由我提供的中断指定,但所有默认轮廓仍然显示标签。如何仅绘制图形轮廓的标签?

一个相关的问题,我将如何绘制不包含在默认值中的等高线级别的标签?说休息165:

e<-v + stat_contour(aes(breaks=c(165), colour=..level..))
direct.label(e)

谢谢你的帮助!

4

1 回答 1

3

当前的开发版本(带有 ggplot2_0.9.3.1 的 directlabels_2013.6.15)应该可以解决您的问题(正如 directlabels 包的作者向我解释的那样)。您可以使用以下方式安装它:

install.packages("directlabels", repos="http://r-forge.r-project.org")

接着:

library(plyr)
library(ggplot2)
library(directlabels)
library(reshape)
volcano<-melt(volcano)
v<-ggplot(volcano, aes(X1,X2,z=value))
e<-v + stat_contour(aes(colour=..level..), breaks=c(165))
direct.label(e)

我通过简单的解决方法注意到了其他几个限制:

  • 第一个ggplot电话必须包含z审美
  • 这仅适用于stat_contour(而不适用于geom_contour
  • colour美学必须在调用中定义并stat_contour设置为..level..

最后,如果您想控制标签和轮廓线的颜色(例如黑色标签和蓝色轮廓线),您可以通过以下方式实现:

e<-v + stat_contour(aes(colour=..level..), colour = "blue", breaks=c(165))
e<-e + scale_colour_continuous(low = "#FF0000", high = "#FF0000")
direct.label(e)
于 2013-07-23T11:00:27.860 回答