Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用ggplot的单变量直方图_R_Ggplot2_Histogram - Fatal编程技术网

R 使用ggplot的单变量直方图

R 使用ggplot的单变量直方图,r,ggplot2,histogram,R,Ggplot2,Histogram,我有一个变量,它有以下值 sce_list[[1]]$total_counts 1 3794 2 2133 3 3482 4 1522 5 3385 6 5495 我想用ggplot做一个柱状图 我正在做的是: ggplot(as.d

我有一个变量,它有以下值

sce_list[[1]]$total_counts
1                       3794
2                       2133
3                       3482
4                       1522
5                       3385
6                       5495
我想用ggplot做一个柱状图

我正在做的是:

ggplot(as.data.frame(size=1:length(sce_list[[1]]), 
                     count=sce_list[[1]]$total_counts,
                     aes(x=count, y=size))
       ) +
       geom_histogram()
谁能告诉我现在哪里出了问题,并给我一个解决方案

注:我按照评论中的建议应用了以下内容

   for  (i in 1:length(paths)){

 ggplot((size=1:length(as.data.frame(sce_list[[i]]))), 
 count=as.data.frame(sce_list[[i]]$total_counts), 
aes(x=count, y=size)) + geom_histogram()}
我得到的错误是:

    Quitting from lines 121-150 (tq.Rmd) 
Error in as.vector(x) : no method for coercing this S4 class to a vector
Calls: <Anonymous> ... ggplot -> as.data.frame -> as.data.frame -> as.vector
Execution halted
从第121-150行退出(tq.Rmd)
as.vector(x)中出错:没有将此S4类强制为向量的方法
电话:。。。ggplot->as.data.frame->as.data.frame->as.vector
停止执行

谢谢你

我将根据你所做的猜测来说明什么是可复制的示例

由于您似乎没有列的名称,并且强制使用数据帧,因此我假定您的数据不是数据帧或TIBLE。因为它似乎有两列,所以它不是一个向量。因此,我假设它是一个有两列的矩阵

当您遇到复杂嵌入的问题时,您需要将其分解为多个部分,以确保每个部分都能正常工作。注意回答者如何复制并粘贴下面的代码

x <- matrix(1:6, c(3794, 2133,  3482,   1522,    3385, 5495), ncol=2)
sce_list <- list()
sce_list$total_counts <- x
现在我们知道变量名是V1和V2。因为我们正在尝试制作一个最小的可复制示例,所以我们不会更改名称

现在让我们来做GG图

直方图是一种非常特殊的连续数据图

ggplot(as.data.frame(sce_list$total_counts), aes(V2)) + 
      geom_histogram()
但是,一个包含6个数据点且没有重复数据的柱状图实际上没有意义,因此我认为您可能需要绘制实际值,在这种情况下,您需要geom_col()。(也因为您称之为计数)


但这只是一个猜测,因为所需的信息尚未提供

我想,
ggplot(sce_列表[[1]],aes(总计数))+geom_直方图()
应该可以满足您的要求。@PoGibas:谢谢您的建议。我得到以下错误:
data
必须是一个数据帧,或者是可由
fortify()
强制的其他对象,而不是一个具有SingleCellExperimentBy类的S4对象。根据定义,直方图只有一个变量,不能有y变量。此外,当调试尝试简化时,在ggplot之外进行所有复杂的工作,以确定问题是与ggplot有关还是与ggplot本身有关。或者您可能希望绘制条形图,您应该使用ggplot(data.frame(size=seq_len(nrow(seq_len)(nrow(sce_list[[1]])、count=sce_list[[1]$total_counts)、aes(size,count))+geom_bar(stat=“identity”)修复代码格式后,我认为括号的放置有问题@波吉巴斯给了你正确的答案,因为你没有提供任何关于sce_列表[[1]]是什么类的信息。您收到的错误消息告诉您要做什么——使用as.data.frame()将sce_列表[[1]]设置为数据帧。
ggplot(as.data.frame(sce_list$total_counts), aes(V2)) + 
      geom_histogram()
ggplot(as.data.frame(sce_list$total_counts), 
          aes(x= V1,y=V2)) + 
      geom_col()