使用 geom_density_2d_filled 的 R 中的密度图问题
Issues with density plots in R using geom_density_2d_filled
我有 x 和 y 位置,我想使用 ggplot 绘制密度图但是,它给了我以下错误:
Error in seq_len(n) : argument must be coercible to non-negative
integer In addition: Warning messages: 1: Computation failed in
stat_density2d_filled()
: bandwidths must be strictly positive 2: In
min(x, na.rm = na.rm) : no non-missing arguments to min; returning
Inf 3: In max(x, na.rm = na.rm) : no non-missing arguments to max;
returning -Inf 4: In max(f) : no non-missing arguments to max;
returning -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 是:Link
如有任何帮助,我们将不胜感激。
谢谢
问题出在你的数据上,而不是代码上。在 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)
我有 x 和 y 位置,我想使用 ggplot 绘制密度图但是,它给了我以下错误:
Error in seq_len(n) : argument must be coercible to non-negative integer In addition: Warning messages: 1: Computation failed in
stat_density2d_filled()
: bandwidths must be strictly positive 2: In min(x, na.rm = na.rm) : no non-missing arguments to min; returning Inf 3: In max(x, na.rm = na.rm) : no non-missing arguments to max; returning -Inf 4: In max(f) : no non-missing arguments to max; returning -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 是:Link
如有任何帮助,我们将不胜感激。
谢谢
问题出在你的数据上,而不是代码上。在 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)