R “错误”;“非数字”;使用带有EnhancedVolcano的串扰包时
我想在两个方向上实现表和绘图之间的串扰功能:R “错误”;“非数字”;使用带有EnhancedVolcano的串扰包时,r,shiny,plotly,bioconductor,ggplotly,R,Shiny,Plotly,Bioconductor,Ggplotly,我想在两个方向上实现表和绘图之间的串扰功能: 选择表中将反映在绘图中的行 在绘图中选择一个点,该点将反映在表格中。和我的想法一样 我已经成功地实现了一个脚本,如果我使用ggplot()和table(两个对象都有串扰!)制作散点图,那么这个脚本的效果会非常好。但是,当使用EnhancedVolcano()和表I时,出现以下错误: Error in EnhancedVolcano(toptable = data_shared, lab = "disp", x = "qsec", : qsec
ggplot()
和table(两个对象都有串扰!)制作散点图,那么这个脚本的效果会非常好。但是,当使用EnhancedVolcano()
和表I时,出现以下错误:
Error in EnhancedVolcano(toptable = data_shared, lab = "disp", x = "qsec", :
qsec is not numeric!
Error in as.data.frame.default(toptable) :
cannot coerce class ‘c("SharedData", "R6")’ to a data.frame
如果我用df\u orig
替换data\u shared
变量,则不会产生错误,但对象之间不会发生交叉对话:(
这是否意味着SharedData$new()
无法将数值识别为数值?如何修复此错误
非常感谢您的帮助。
多谢各位
玩具示例:
library(plotly) # '4.9.1'
library(DT) # '0.11'
library(crosstalk) # ‘1.0.0’
library(EnhancedVolcano) # ‘1.4.0’
# Input
data1 = mtcars #dim(data1) # 32 11
data_shared = SharedData$new(data1) #, key = c("qsec", "hp"))
# df_orig = data_shared$origData()
# V-Plot
vp =EnhancedVolcano( toptable = data_shared,
lab = 'disp',
x = 'qsec',
y = 'hp',
xlab ='testX',
ylab = 'testY')
bscols(
ggplotly(vp + aes(x= qsec, y= -log10(hp/1000))),
datatable(data_shared, style="bootstrap", class="compact", width="100%",
options=list(deferRender=FALSE, dom='t')))
相同的脚本,可用于ggplot()
:
注意:相关(相同)问题是,软件包作者发布了一个答案,经作者许可,在此处复制一个答案:
嗨 谢谢-这是非常有用的代码,最终我可能会将其添加到主程序包vignette中 我在我的电脑上试过了,我可以在我的浏览器中使用它,但原始绘图的某些部分似乎丢失了。我想你只需要将列“qsec”转换为数值 再次使用我的示例,这里是一个完全可复制的示例:
library("pasilla")
pasCts <- system.file("extdata", "pasilla_gene_counts.tsv",
package="pasilla", mustWork=TRUE)
pasAnno <- system.file("extdata", "pasilla_sample_annotation.csv",
package="pasilla", mustWork=TRUE)
cts <- as.matrix(read.csv(pasCts,sep="\t",row.names="gene_id"))
coldata <- read.csv(pasAnno, row.names=1)
coldata <- coldata[,c("condition","type")]
rownames(coldata) <- sub("fb", "", rownames(coldata))
cts <- cts[, rownames(coldata)]
library("DESeq2")
dds <- DESeqDataSetFromMatrix(countData = cts,
colData = coldata,
design = ~ condition)
featureData <- data.frame(gene=rownames(cts))
mcols(dds) <- DataFrame(mcols(dds), featureData)
dds <- DESeq(dds)
res <- results(dds)
library(EnhancedVolcano)
p1 <- EnhancedVolcano(res,
lab = rownames(res),
x = "log2FoldChange",
y = "pvalue",
pCutoff = 10e-4,
FCcutoff = 2,
xlim = c(-5.5, 5.5),
ylim = c(0, -log10(10e-12)),
pointSize = c(ifelse(res$log2FoldChange>2, 8, 1)),
labSize = 4.0,
shape = c(6, 6, 19, 16),
title = "DESeq2 results",
subtitle = "Differential expression",
caption = "FC cutoff, 1.333; p-value cutoff, 10e-4",
legendPosition = "right",
legendLabSize = 14,
col = c("grey30", "forestgreen", "royalblue", "red2"),
colAlpha = 0.9,
drawConnectors = TRUE,
hline = c(10e-8),
widthConnectors = 0.5)
p1 <- p1 +
ggplot2::coord_cartesian(xlim=c(-6, 6)) +
ggplot2::scale_x_continuous(
breaks=seq(-6,6, 1))
library(plotly)
library(DT)
library(crosstalk)
bscols(
ggplotly(p1 + aes(x= log2FoldChange, y= -log10(pvalue))),
datatable(
data.frame(res),
style="bootstrap",
class="compact", width="100%",
options=list(deferRender=FALSE, dom='t')))
当我尝试添加这些时,它会抛出一个错误
Kevin注意:相关(相同)问题是,软件包作者发布了答案,经作者许可,在此处复制答案:
嗨 谢谢-这是非常有用的代码,最终我可能会将其添加到主程序包vignette中 我在我的电脑上试过了,我可以在我的浏览器中使用它,但原始绘图的某些部分似乎丢失了。我想你只需要将列“qsec”转换为数值 再次使用我的示例,这里是一个完全可复制的示例:
library("pasilla")
pasCts <- system.file("extdata", "pasilla_gene_counts.tsv",
package="pasilla", mustWork=TRUE)
pasAnno <- system.file("extdata", "pasilla_sample_annotation.csv",
package="pasilla", mustWork=TRUE)
cts <- as.matrix(read.csv(pasCts,sep="\t",row.names="gene_id"))
coldata <- read.csv(pasAnno, row.names=1)
coldata <- coldata[,c("condition","type")]
rownames(coldata) <- sub("fb", "", rownames(coldata))
cts <- cts[, rownames(coldata)]
library("DESeq2")
dds <- DESeqDataSetFromMatrix(countData = cts,
colData = coldata,
design = ~ condition)
featureData <- data.frame(gene=rownames(cts))
mcols(dds) <- DataFrame(mcols(dds), featureData)
dds <- DESeq(dds)
res <- results(dds)
library(EnhancedVolcano)
p1 <- EnhancedVolcano(res,
lab = rownames(res),
x = "log2FoldChange",
y = "pvalue",
pCutoff = 10e-4,
FCcutoff = 2,
xlim = c(-5.5, 5.5),
ylim = c(0, -log10(10e-12)),
pointSize = c(ifelse(res$log2FoldChange>2, 8, 1)),
labSize = 4.0,
shape = c(6, 6, 19, 16),
title = "DESeq2 results",
subtitle = "Differential expression",
caption = "FC cutoff, 1.333; p-value cutoff, 10e-4",
legendPosition = "right",
legendLabSize = 14,
col = c("grey30", "forestgreen", "royalblue", "red2"),
colAlpha = 0.9,
drawConnectors = TRUE,
hline = c(10e-8),
widthConnectors = 0.5)
p1 <- p1 +
ggplot2::coord_cartesian(xlim=c(-6, 6)) +
ggplot2::scale_x_continuous(
breaks=seq(-6,6, 1))
library(plotly)
library(DT)
library(crosstalk)
bscols(
ggplotly(p1 + aes(x= log2FoldChange, y= -log10(pvalue))),
datatable(
data.frame(res),
style="bootstrap",
class="compact", width="100%",
options=list(deferRender=FALSE, dom='t')))
当我尝试添加这些时,它会抛出一个错误
Kevin试图修改火山函数中的一些内容,但出现以下错误:
Error in EnhancedVolcano(toptable = data_shared, lab = "disp", x = "qsec", :
qsec is not numeric!
Error in as.data.frame.default(toptable) :
cannot coerce class ‘c("SharedData", "R6")’ to a data.frame
还不确定如何修复。尝试修改火山函数中的一些内容,但出现以下错误:
Error in EnhancedVolcano(toptable = data_shared, lab = "disp", x = "qsec", :
qsec is not numeric!
Error in as.data.frame.default(toptable) :
cannot coerce class ‘c("SharedData", "R6")’ to a data.frame
还不确定如何修复它。嘿,我担心EnhancedVolcano是许多ggplot2函数的大包装,不支持串扰…要么你破解EnhancedVolcano函数,要么你用ggplot2编写火山图…哦,不!真是糟糕!!!嘿,我担心EnhancedVolcano是许多ggplot2函数的大包装d不支持串扰…要么你破解了EnhancedVolcano函数,要么你用ggplot2写火山图…哦,不!真糟糕!!!