绘制火山图时在 R 中发出警告:忽略观察
Plotly warning in R when plotting volcano plot: ignoring observations
我在 R 中使用 plotly 生成火山图。当我调用 plot 时,它看起来很好,但我也得到一个错误:
Warning message: Ignoring 5 observations
我如何找出这 5 个观察结果是什么?或者为什么他们被忽视了?
我需要检查这5个数据点是否有问题。我已经目视检查了我的数据,没有发现任何问题,但它是一个巨大的数据集,所以我可能会遗漏一些东西。
有人可以提供一些调试步骤的建议吗?
编辑:我不确定它是否有帮助,因为我怀疑问题出在我的数据上,而不是代码上,但这是我使用的代码,带有简化的数据。
library(plotly)
name <- c("Name1", "Name2", "Name3")
log2FoldChange <- c(-2.7419374, 2.9655255, -1.7455225)
padj <- c(2.25e-27, 3.01e-24, 2.56e-25)
df <- data.frame(name, log2FoldChange, padj)
my_plot <- plot_ly(data = df,
x = df$log2FoldChange,
y = -log10(df$padj))
关于你的问题,我看到你正在使用 log10
函数来计算 y 轴点,请注意 log 没有为负数(和 0)定义。这些值将产生 NaN
并将被忽略。
关于更广泛的问题,如何查看正在绘制的数据,使用 ggplot
和 plotly
您可以提取数据,但使用 plotly
我找到了它很难找到未绘制的数据。
library(palmerpenguins)
#> Warning: package 'palmerpenguins' was built under R version 4.0.5
invisible(library(tidyverse))
#> Warning: package 'dplyr' was built under R version 4.0.3
invisible(library(plotly))
randomRows = sample(1:nrow(penguins), 10) #to replace any 10 rows with NA
penguins[randomRows, "body_mass_g"] = NA
penguins %>%
ggplot(aes(bill_length_mm, body_mass_g)) +
geom_point() -> plot_ggplot
plot_ggplot
#> Warning: Removed 11 rows containing missing values (geom_point).
如您所见,它会发出行已被忽略的警告。
获取绘图数据:
head(ggplot_build(plot_ggplot)$data[[1]])
#> x y PANEL group shape colour size fill alpha stroke
#> 1 39.1 3750 1 -1 19 black 1.5 NA NA 0.5
#> 2 39.5 3800 1 -1 19 black 1.5 NA NA 0.5
#> 3 40.3 3250 1 -1 19 black 1.5 NA NA 0.5
#> 4 NA NA 1 -1 19 black 1.5 NA NA 0.5
#> 5 36.7 3450 1 -1 19 black 1.5 NA NA 0.5
#> 6 39.3 3650 1 -1 19 black 1.5 NA NA 0.5
x
和 y
列代表您的 x 轴和 y 轴。
在 plotly
的情况下,有一种类似的方法来提取数据,但它只显示那些绘制的点。我想不出一种方法来提取被忽略的值。
pp = plot_ly(penguins, x=~bill_depth_mm, y=~body_mass_g, type='scatter')
plotly_build(pp) -> plotly_data
#> No scatter mode specifed:
#> Setting the mode to markers
#> Read more about this attribute -> https://plot.ly/r/reference/#scatter-mode
#> Warning: Ignoring 11 observations
#> Warning: `arrange_()` was deprecated in dplyr 0.7.0.
#> Please use `arrange()` instead.
#> See vignette('programming') for more help
names(plotly_data$x$data[[1]])
#> [1] "x" "y" "type" "mode" "marker" "error_y" "error_x"
#> [8] "line" "xaxis" "yaxis" "frame"
#this gives your x-axis data
plotly_data$x$data[[1]]$x[1:5]
#> [1] 18.7 17.4 18.0 19.3 20.6
#this gives your y-axis data
plotly_data$x$data[[1]]$y[1:5]
#> [1] 3750 3800 3250 3450 3650
由 reprex package (v0.3.0)
于 2021-07-02 创建
我在 R 中使用 plotly 生成火山图。当我调用 plot 时,它看起来很好,但我也得到一个错误:
Warning message: Ignoring 5 observations
我如何找出这 5 个观察结果是什么?或者为什么他们被忽视了? 我需要检查这5个数据点是否有问题。我已经目视检查了我的数据,没有发现任何问题,但它是一个巨大的数据集,所以我可能会遗漏一些东西。
有人可以提供一些调试步骤的建议吗?
编辑:我不确定它是否有帮助,因为我怀疑问题出在我的数据上,而不是代码上,但这是我使用的代码,带有简化的数据。
library(plotly)
name <- c("Name1", "Name2", "Name3")
log2FoldChange <- c(-2.7419374, 2.9655255, -1.7455225)
padj <- c(2.25e-27, 3.01e-24, 2.56e-25)
df <- data.frame(name, log2FoldChange, padj)
my_plot <- plot_ly(data = df,
x = df$log2FoldChange,
y = -log10(df$padj))
关于你的问题,我看到你正在使用 log10
函数来计算 y 轴点,请注意 log 没有为负数(和 0)定义。这些值将产生 NaN
并将被忽略。
关于更广泛的问题,如何查看正在绘制的数据,使用 ggplot
和 plotly
您可以提取数据,但使用 plotly
我找到了它很难找到未绘制的数据。
library(palmerpenguins)
#> Warning: package 'palmerpenguins' was built under R version 4.0.5
invisible(library(tidyverse))
#> Warning: package 'dplyr' was built under R version 4.0.3
invisible(library(plotly))
randomRows = sample(1:nrow(penguins), 10) #to replace any 10 rows with NA
penguins[randomRows, "body_mass_g"] = NA
penguins %>%
ggplot(aes(bill_length_mm, body_mass_g)) +
geom_point() -> plot_ggplot
plot_ggplot
#> Warning: Removed 11 rows containing missing values (geom_point).
如您所见,它会发出行已被忽略的警告。
获取绘图数据:
head(ggplot_build(plot_ggplot)$data[[1]])
#> x y PANEL group shape colour size fill alpha stroke
#> 1 39.1 3750 1 -1 19 black 1.5 NA NA 0.5
#> 2 39.5 3800 1 -1 19 black 1.5 NA NA 0.5
#> 3 40.3 3250 1 -1 19 black 1.5 NA NA 0.5
#> 4 NA NA 1 -1 19 black 1.5 NA NA 0.5
#> 5 36.7 3450 1 -1 19 black 1.5 NA NA 0.5
#> 6 39.3 3650 1 -1 19 black 1.5 NA NA 0.5
x
和 y
列代表您的 x 轴和 y 轴。
在 plotly
的情况下,有一种类似的方法来提取数据,但它只显示那些绘制的点。我想不出一种方法来提取被忽略的值。
pp = plot_ly(penguins, x=~bill_depth_mm, y=~body_mass_g, type='scatter')
plotly_build(pp) -> plotly_data
#> No scatter mode specifed:
#> Setting the mode to markers
#> Read more about this attribute -> https://plot.ly/r/reference/#scatter-mode
#> Warning: Ignoring 11 observations
#> Warning: `arrange_()` was deprecated in dplyr 0.7.0.
#> Please use `arrange()` instead.
#> See vignette('programming') for more help
names(plotly_data$x$data[[1]])
#> [1] "x" "y" "type" "mode" "marker" "error_y" "error_x"
#> [8] "line" "xaxis" "yaxis" "frame"
#this gives your x-axis data
plotly_data$x$data[[1]]$x[1:5]
#> [1] 18.7 17.4 18.0 19.3 20.6
#this gives your y-axis data
plotly_data$x$data[[1]]$y[1:5]
#> [1] 3750 3800 3250 3450 3650
由 reprex package (v0.3.0)
于 2021-07-02 创建