【问题标题】:Create barplot from data.frame从 data.frame 创建条形图
【发布时间】:2013-05-17 20:28:57
【问题描述】:

在 R 中,我有一个类似于图片顶部的 data.frame。

是否有可能创建如下所示的条形图?

data.frame:

      X1   X2   X3  
 --- ---- ---- ---- 
  A    2   3    4   
  B    4   2    1   
  C    1   NA   NA  

条形图:

----------------------------
|                          |
|       #    #             |
|    #  #    #             |
| #  #  #    #  #          |
| #  #  #    #  #  #    #  |
----------------------------
  X1 X2 X3   X1 X2 X3   x1
     A           B       C

【问题讨论】:

  • 如果您的意思是 ascii 输出,请尝试使用 txtplot 包。
  • 对不起,这只是一个例子;)我想要一个像我用 barplot 函数得到的情节
  • 您可能想更改问题的标题?您实际上想从 data.frame 创建条形图,反之亦然。

标签: r plot dataframe


【解决方案1】:

使用基本图形您可以简单地做到这一点:

mydf <- data.frame( X1=c(A=2, B=4, C=1), X2=c(3,2,NA), X3=c(4,1,NA) )
barplot(t(as.matrix(mydf)), beside=TRUE)

axis 进行额外调用可以使标签更像问题中的内容。

【讨论】:

  • 这应该是公认的答案——为什么要使用两个库来完成这么简单的任务?
  • 因为如果您的 df 很大,转换为矩阵然后表格可能会增加很多开销?
  • @wordsforthewise,如果 df 太大以至于这种开销甚至很明显(更不用说问题),那么条形图可能不是最好的可视化。
【解决方案2】:

假设您不想要 ascii 输出,这是使用 ggplot2 的解决方案:

# load / generate your data
mydf <- data.frame( X1 = c(2,4,1), X2 = c(3,2,NA), x3 = c(4,1,NA), row.names=c("A","B","C") )
mydf$Category  <- row.names(mydf)

# bring your data to long format as needed by ggplot
library(reshape2)
mydf.molten <- melt(mydf, value.name="Count", variable.name="Variable", na.rm=TRUE)

# plot and facet by categories
library(ggplot2)
qplot( data=mydf.molten, x = Variable, y = Count, geom="bar", stat = "identity" ) + facet_wrap( "Category" )

更多详情,我建议参考ggplot2 manual,尤其是关于geom_barfacet_wrap的章节。

【讨论】:

  • 您的代码出现此错误:&gt; mydf.molten &lt;- melt(mydf, value.name="Count", variable.name="Variable", na.rm=TRUE) Using Category as id variables &gt; qplot( data=mydf.molten, x = Variable, y = Count, geom="bar", stat = "identity" ) + facet_wrap( "Category" ) Error: stat_count() must not be used with a y aesthetic. In addition: Warning message: stat` 已弃用`
  • @Mona Jalal; ggplot2 自 2013 年以来发生了变化,尤其是从版本升级时。 1.xxx 到 2.xxx。
猜你喜欢
  • 2016-07-08
  • 1970-01-01
  • 1970-01-01
  • 2015-05-08
  • 1970-01-01
  • 1970-01-01
  • 2015-01-15
  • 1970-01-01
  • 2012-10-23
相关资源
最近更新 更多