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

时间:2012-05-20 17:00:05

标签: r ggplot2 contour

我对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)

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

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)

感谢您的帮助!

2 个答案:

答案 0 :(得分: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)

aes映射中未包含中断,并且包含colour=..level..

enter image description here

答案 1 :(得分:2)

使用ggplot&gt; 2.0.0你需要添加方法=&#34; bottom.pieces&#34; (或top.pieces)到direct.label调用

library(directlabels)
direct.label(e, method="bottom.pieces")