【问题标题】:stat_contour with data labels on linesstat_contour 行上带有数据标签
【发布时间】:2012-11-29 14:16:14
【问题描述】:

我想知道如何在ggplot2 中的行上获取轮廓数据标签。谢谢

require(grDevices) # for colours

x <- seq(-4*pi, 4*pi, len = 27)
y <- seq(-4*pi, 4*pi, len = 27)
r <- sqrt(outer(x^2, y^2, "+"))

rx <- range(x <- 10*1:nrow(volcano))
ry <- range(y <- 10*1:ncol(volcano))
ry <- ry + c(-1, 1) * (diff(rx) - diff(ry))/2

plot(
    x = 0
  , y = 0
  , type = "n"
  , xlim = rx
  , ylim = ry
  , xlab = ""
  , ylab = ""
  )

contour(
    x = x
  , y = y
  , z = volcano
  , add = TRUE
  )

library(ggplot2)
library(reshape2)
volcano3d <- melt(volcano)
names(volcano3d) <- c("x", "y", "z")

# Basic plot
v <- ggplot(volcano3d, aes(x, y, z = z))
v + stat_contour()

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    使用来自this 的直接标签包和选择解决方案

    # Basic plot
    v <- ggplot(volcano3d, aes(x, y, z = z))
    library(directlabels)
    v2 <- v + stat_contour(aes(colour = ..level..))
    direct.label(v2, method="bottom.pieces")
    

    【讨论】:

    • 使用 ggplot > 2.0.0 你需要将method="bottom.pieces"(或top.pieces)添加到direct.label调用
    【解决方案2】:

    这是一个已经回答的老问题,但我做了很多等高线图,我认为使用包 metR (https://rdrr.io/github/eliocamp/metR/f/vignettes/Visualization-tools.Rmd) 有一种更简单、更通用的方法来做到这一点。这个包有函数 geom_label_contour() 提供了一种简单的方法来绘制轮廓标签。还提供了很多绘制地图的功能。

    library(ggplot2)
    library(reshape2)
    library(metR)
    volcano3d <- melt(volcano)
    colnames(volcano3d) <- c('x','y','z')
    
    ggplot(data = volcano3d, aes(x=x,y=y,z=z)) + geom_contour() +
      geom_label_contour()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-22
      • 1970-01-01
      • 2020-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多