【问题标题】:R: How to Label Specific Contours using direct.labelR:如何使用 direct.label 标记特定轮廓
【发布时间】:2018-05-10 17:59:50
【问题描述】:

我对@9​​87654321@ 比较陌生,在为我的轮廓添加适当的标签时遇到了麻烦。

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

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)

感谢您的帮助!

【问题讨论】:

  • 值得注意的是direct.label()在directlabels包中。
  • 是的,感谢您指出这一点。
  • 我应该重新发布这个问题,还是人们还在看它?
  • 我建议您以稍微不同的方式提出问题,然后重新发布。据我所知,Directlabel 并不是一个使用非常广泛的软件包。我敢打赌,有一种全 ggplot 方式来做你想做的事;我会放弃对 direct.label() 的引用,看看人们想出了什么其他解决方案。
  • 很想知道是否有人知道这一点。有完全相同的问题

标签: r ggplot2 contour


【解决方案1】:

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

简单的问题是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..

【讨论】:

  • 似乎不适用于ggplot2 版本&gt;2.0.0
【解决方案2】:

使用 ggplot > 2.0.0,您需要将 method="bottom.pieces"(或 top.pieces)添加到 direct.label 调用

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-11
    • 1970-01-01
    • 2010-09-27
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 2021-10-26
    • 2019-04-17
    相关资源
    最近更新 更多