使用 geom_density_2d_filled R 中的密度图问题
Posted
技术标签:
【中文标题】使用 geom_density_2d_filled R 中的密度图问题【英文标题】:Issues with density plots in R using geom_density_2d_filled 【发布时间】:2022-01-14 09:15:41 【问题描述】:我有 x 和 y 位置,我想使用 ggplot 绘制密度图,但是它给了我以下错误:
seq_len(n) 中的错误:参数必须强制为非负数 整数另外:警告消息:1:计算失败
stat_density2d_filled()
:带宽必须严格为正 2:在 min(x, na.rm = na.rm) : min 没有非缺失参数;返回 Inf 3:在 max(x, na.rm = na.rm) 中:max 没有非缺失参数; 返回 -Inf 4:在 max(f) 中:max 没有非缺失参数; 返回 -Inf
x 和 y 都是数字,没有缺失值。但我仍然不断收到同样的错误。我使用的代码是:
ggplot(Fish, aes(x=xpos, y=ypos)) +
geom_density_2d_filled(aes(fill = ..level..), alpha=0.85, breaks= c(0,10^-5, 10^-4,10^-3,10^-2,10^-1,1),
contour_var = "ndensity") +
scale_fill_brewer(type = "seq",palette = "Spectral", direction = -1)
此代码适用于其他鱼的 x 和 y 位置的其他数据集。但是这个数据集给出了错误。
带有数据的 CSV 文件的链接是:Link
任何帮助将不胜感激。
谢谢
【问题讨论】:
根据您的描述,这可能是您的数据中的某些内容,而不是您的代码,因此如果没有您的数据样本,将很难提供帮助。 我不知道如何在这里提供数据,但我添加了一个链接来下载带有数据的 .csv 文件。 如果可能,请使用dput(yourdata)
并粘贴输出而不是提供链接。这将确保我们拥有准确的结构来重新创建您的数据。
【参考方案1】:
这是您的数据问题,而不是代码问题。在ypos = 30
(~82%) 和ypos==0
处存在不成比例的ypos
值。这使其计算密度的能力变得复杂(可能会产生NaN
或Inf
,因为seq_length()
需要一个数字)。
如果您删除此问题,您粘贴的代码确实有效,因此我建议您仔细检查数据或导致数据的代码,而不是此代码本身。
Fish <- read.csv(".../fish.csv")
NewFish <- Fish[Fish$ypos>0 & Fish$ypos<30,]
ggplot(Fish, aes(x = xpos, y = ypos)) +
geom_density_2d_filled(aes(fill = ..level..), alpha=0.85, breaks= c(0,10^-5, 10^-4,10^-3,10^-2,10^-1,1),
contour_var = "ndensity") +
scale_fill_brewer(type = "seq",palette = "Spectral", direction = -1)
【讨论】:
以上是关于使用 geom_density_2d_filled R 中的密度图问题的主要内容,如果未能解决你的问题,请参考以下文章
R语言使用ggplot2包使用geom_density()函数绘制基础密度图实战(density plot)
R语言使用ggplot2包使用geom_density()函数绘制密度图(填充色线性设置)实战(density plot)
R语言使用ggplot2包使用geom_density()函数绘制分组密度图(线条色彩添加均值线)实战(density plot)
R语言使用ggplot2包使用geom_density()函数绘制分组密度图(分组拆分画板基于facet)实战(density plot)
R语言使用ggplot2包使用geom_density()函数绘制密度图(连续色彩离散色彩梯度色彩)实战(density plot)
R语言使用ggplot2包使用geom_density()函数绘制分组密度图(改变图例位置移除图例)实战(density plot)