R:如何使用direct.label标记特定轮廓

Bur*_*ter 10 r contour ggplot2

我比较新ggplot2,而且我在为我的轮廓添加适当的标签时遇到了麻烦.

使用经典的火山示例,我可以在默认等值线图中添加标签:

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)
Run Code Online (Sandbox Code Playgroud)

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

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

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

一个相关的问题,我如何绘制默认情况下未包含的轮廓水平标签?说休息165:

e<-v + stat_contour(aes(breaks=c(165), colour=..level..))
direct.label(e)
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

a d*_*ben 5

我无法忍受看到如此简单的解决方案无法解决一个老问题。

简单的问题是内部的映射stat_contour()。您的电话应该是:

v<-ggplot(volcano, aes(x=X1,y=X2,z=value))  # specify the mapping properly
e<-v + stat_contour(aes(colour=..level..), breaks=c(160, 170, 180))
direct.label(e)
Run Code Online (Sandbox Code Playgroud)

与中断不包含在aes映射中,并且colour=..level..包含在内。

在此处输入图片说明

  • 似乎不适用于`ggplot2`版本`&gt; 2.0.0`。 (4认同)