2

我有这个数据框

product Total
AF064   21
AF065   24
AF066   1
AF067   13
AF068   6
AF069   3
AF070   5
AF071   1
AF072   3
AF073   3
AF074   5
AF075   2
AF076   28
AF077   0
AF078   3
AF079   10
AF080   0
AF081   13
AF082   0
AF083   3
AF084   3
AF085   2
AF086   3
AF087   0
AF088   1
AF089   1
AF090   2
AF091   4
AF092   2
AF093   3
AF094   2
AF095   3
AF096   1
AF097   2
AF098   2
AF099   1
AF100   21
AF101   1
AF102   3

我想从这个数据框制作条形图。

我的代码是

barplot(product,Total)
**Error in -0.01 * height : non-numeric argument to binary operator**

我也试过

barplot(dataframe)
**Error in barplot.default(dataframe) : 
  'height' must be a vector or a matrix**

我也尝试as.character过该产品,但仍然无法绘制图表。我真的很感谢你们的帮助,非常感谢。

4

2 回答 2

1

您希望 barplot 的参数是高度向量。你可以使用这样的东西:

barplot(dataframe[,2], names.arg=dataframe[,1])
于 2015-02-10T03:15:18.247 回答
0

你的第一次尝试几乎是正确的,

attach(dataframe)
barplot(Total,names.arg=product)

会做的。

另一种可能性是将 df 转换为矩阵并将其提供给barplot()函数。

barplot()函数将为矩阵的每一列绘制一个条形图,因此您需要转置数据帧的立即转换

m <- t( matrix(dataframe[,2],dimnames=dataframe[1]) )
barplot(m)

如果您的数据框中有多个列(例如 2 到 3),您可以将它们全部放在矩阵中,作为行:

m <- t(as.matrix(dataframe[,2:3]))
colnames(m) <- dataframe[,1]
barplot(m,legend=T)

至于您的最后一条评论,您可以将标签横向翻转并稍微调整它们的大小。即直接使用数据框

 attach(dataframe)
 barplot(Total,names.arg=product,cex.names=0.6,las=2)

或使用矩阵m

 barplot(m,cex.names=0.6,las=2)
于 2015-02-10T09:02:10.013 回答