我对 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)
感谢您的帮助!
最佳答案
当前的开发版本(directlabels_2013.6.15 和 ggplot2_0.9.3.1)应该可以解决您的问题(正如 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
) 颜色
美感必须在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)
关于r - 在 ggplot2 中自定义轮廓标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10730062/