r - 在 ggplot2 中自定义轮廓标签

标签 r label ggplot2 contour

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

相关文章:

r - 绘制一条 geom_smooth 曲线而不是多条曲线

r - for if else 循环 - 根据来自不同数据帧的匹配列填充列中的值

swift - 如何从另一个类更改标签和表格 View ?

button - Swift-如何让按钮在每次点击时刷新?

forms - 如何在 Yii 表单标签中添加一个类?

r - 直接在 ggplot 中设置直方图的 bin 数量

r - 将笛卡尔角转换为 R 中的极角/罗盘角/基数角?

r - 创建安装 rstan 的 docker 镜像时出现问题

r - 在 geom_tile()/geom_raster() 中标记特定的瓦片

r - 如何在同一个 ggplot2 (R) 上拟合负二项式、正态和泊松密度函数但缩放到计数数据?