[英]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
所有值也有x
和y
数据。 一个简单的数据框如下所示:
由于我已将小数点截断,请忽略重复的常见x和y。 数据大约有25000行。
方法:我首先使用akima包对给定x
和y
z
变量值进行插值,以在2d中映射z
。 这使得z
列数据适合xy网格以进行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增加到在函数中使用nx
和ny
输入的自定义。
然后在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.