使用ggplot的一个可变直方图

时间:2018-12-28 10:45:04

标签: r ggplot2 histogram

我有一个具有以下值的变量

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

谢谢

1 个答案:

答案 0 :(得分:1)

我将基于对您所做的猜测来说明可重复的示例。

由于您似乎没有这些列的名称并且要强制使用数据框,因此我认为您的数据不是数据框或小标题。由于它似乎有两列,因此它不是向量。因此,我假设它是一个具有两列的矩阵。

当您遇到复杂的嵌入问题时,例如,您需要将其分解成几块,以确保每一块都能工作。请注意应答者如何复制和粘贴下面的代码。

x <- matrix(1:6, c(3794, 2133,  3482,   1522,    3385, 5495), ncol=2)
sce_list <- list()
sce_list$total_counts <- x

让我们将其强制到数据框,看看它是什么样。

as.data.frame(sec_list$total_counts)

  V1   V2
1  1  794
2  2 2133
3  3 3482
4  4 1522
5  5 3385
6  6 5495

好的,现在我们知道变量名是V1和V2。由于我们试图制作一个最小的可复制示例,因此我们不会更改名称。

现在让我们来做ggplot。

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

ggplot(as.data.frame(sce_list$total_counts), aes(V2)) + 
      geom_histogram()

但是,具有6个数据点且没有重复项的直方图实际上没有任何意义,因此我认为您可能需要绘制实际值,在这种情况下,您将需要geom_col()。 (也是因为您称他们为计数)

ggplot(as.data.frame(sce_list$total_counts), 
          aes(x= V1,y=V2)) + 
      geom_col()

Image of column plot

但这只是一个猜测,因为没有提供所需的信息。