繁体   English   中英

在绘图中定义填充的2d等高线图的外边缘

[英]Defining outer edge of filled 2d Contour plot in plotly

问题:我正在尝试使用plotly在R中再现圆形填充的2d等高线图(也尝试过ggplot2,但是plotly似乎更容易)。

数据:样本数据下载链接-https : //drive.google.com/file/d/10Mr5yWVReQckPI6TKLY_vzPT8zWiijKl/view ?usp=sharing

要为轮廓绘制的数据采用列格式,通常称为z变量,对于z所有值也有xy数据。 一个简单的数据框如下所示:

样本数据框

由于我已将小数点截断,请忽略重复的常见x和y。 数据大约有25000行。

方法:我首先使用akima包对给定xy z变量值进行插值,以在2d中映射z 这使得z列数据适合xy网格以进行2d绘制并显示轮廓。

预期结果:
z变量的2d等高线图

使用的代码:

dens <- akima::interp(x = dt$`Xvalue(mm)`, 
                  y = dt$`Yvalue(mm)`, 
                  z = dt$Values, 
                  duplicate = "mean",
                  xo=seq(min(dt$`Xvalue(mm)`), max(dt$`Xvalue(mm)`), length = 10),
                  yo=seq(min(dt$`Yvalue(mm)`), max(dt$`Yvalue(mm)`), length = 10))

plot_ly(x = dens$x, 
      y = dens$y, 
      z = dens$z, 
      colors = c("blue","grey","red"), 
      type = "contour")

实际结果: 绘制等高线图

需要帮助:将实际结果图的边缘细化为与预期结果图像非常匹配的图像。

在此先感谢您的评论和帮助。

我发现我可以将akima::interp()的网格输出z矩阵从默认的40x40增加到在函数中使用nxny输入的自定义。

然后在plot_ly()添加contours = list(coloring = 'fill', showlines = FALSE)隐藏轮廓线以使输出接近我的预期结果。

因此,工作代码如下所示:

dens <- akima::interp(x = dt$`Xvalue(mm)`, 
              y = dt$`Yvalue(mm)`, 
              z = dt$Values, 
              nx = 50, 
              ny = 50,
              duplicate = "mean",
              xo=seq(min(dt$`Xvalue(mm)`), max(dt$`Xvalue(mm)`), length = 50),
              yo=seq(min(dt$`Yvalue(mm)`), max(dt$`Yvalue(mm)`), length = 50))

plot_ly(x = dens$x, 
  y = dens$y, 
  z = dens$z, 
  colors = c("blue","grey","red"), 
  type = "contour",
  contours = list(coloring = 'fill', showlines = FALSE))

实际结果

在这种情况下,绘制等高线图参考非常有用: https ://plot.ly/r/reference/#contour

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM