相关疑难解决方法(0)

在ggplot2中绘制轮廓线平截面上的标签

在上一个问题中,我用ggplot2代替了(使用字段包)生成的等高线图(下面的完整示例).唯一的麻烦是,我想复制轮廓标签的位置,contour()默认情况下是在线的"最平坦"部分 - 第二张图片可能会显示原因.我对如何设置计算感到困惑.我在这里看到可以抓取用于生成轮廓线的数据,然后geom_text()可以用来绘制文本.那么剩下的就是弄清楚如何计算"最平坦"的部分.想法?

library(fields)
library(ggplot2)
library(reshape)
library(directlabels)

sumframe<-structure(list(Morph = c("LW", "LW", "LW", "LW", "LW", "LW", "LW", "LW", "LW", "LW", "LW", "LW", "LW", "SW", "SW", "SW", "SW", "SW", "SW", "SW", "SW", "SW", "SW", "SW", "SW", "SW"), xvalue = c(4, 8, 9, 9.75, 13, 14, 16.25, 17.25, 18, 23, 27, 28, 28.75, 4, 8, 9, 9.75, 13, 14, 16.25, 17.25, 18, 23, 27, 28, 28.75), yvalue = c(17, 34, 12, 21.75, 29, 7, 36.25, …
Run Code Online (Sandbox Code Playgroud)

field r contour ggplot2

13
推荐指数
1
解决办法
3148
查看次数

进行热图,水平/等高线图和六边形分级的方法

R中(x,y,z)的2D图的选项有点多.然而,解决这些选择是一个挑战,特别是在所有三个都是连续的情况下.

为了澄清问题(并可能有助于解释为什么我可能会被绊倒contourimage),这里有一个可能的分类方案:

  • 情况1:未提供z的值,但是基于(x,y)中的值的条件密度.(注意:这基本上是将z的计算降级为单独的函数 - 密度估计.某些东西仍然必须使用该计算的输出,因此允许任意计算会很好.)
  • 情况2:(x,y)对是唯一且规则间隔的.这意味着每个(x,y)值仅提供一个z值.
  • 情况3:(x,y)对是唯一的,但是是连续的.着色或着色仍然只由1个唯一的z值决定.
  • 情况4:(x,y)对不是唯一的,但是有规律地间隔开.着色或着色由z值上的聚合函数确定.
  • 情况5:(x,y)对不是唯一的,是连续的.着色/着色必须由z值上的聚合函数确定.

如果我遗漏了一些情况,请告诉我.我感兴趣的案例是#5.关于关系的一些注释:

  • 案例#1似乎已得到很好的支持.
  • 案例#2不容易受到支持heatmap,image和函数ggplot.
  • 情况#3由基础支持plot,但使用颜色渐变留给用户.
  • 案例#4可以通过使用拆分和应用功能成为案例#2.我以前做过那个.
  • 情况#5可以通过使用转换为#4(然后是#2)cut,但这是不优雅和四四方方的.十六进制分箱可能更好,但这似乎不容易取决于z的值是否存在陡峭的梯度.我决定使用十六进制分箱,但非常欢迎其他聚合函数,特别是如果它们可以使用z值.

我怎么能做#5?这是产生鞍座的代码,虽然spread改变z值的扩展值,这应该在绘制渐变时产生差异.

N       = 1000
spread  = 0.6   # Vals: 0.6, 3.0
set.seed(0)
rot     = matrix(rnorm(4), ncol = 2)
mat0    = matrix(rnorm(2 * N), ncol = 2)
mat1    = mat0 %*% rot
zMean   = mat0[,2]^2 - mat0[,1]^2
z       = rnorm(N, mean = zMean, sd = spread * median(abs(zMean)))
Run Code Online (Sandbox Code Playgroud)

我想做一些类似的事情hexbin …

plot r ggplot2

10
推荐指数
1
解决办法
4620
查看次数

标签 统计

ggplot2 ×2

r ×2

contour ×1

field ×1

plot ×1