我有这个数据框
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
产品,但仍无法使用该图表。
我非常感谢你的帮助,非常感谢。
答案 0 :(得分:1)
您希望barplot的参数是高度向量。你可以使用这样的东西:
barplot(dataframe[,2], names.arg=dataframe[,1])
答案 1 :(得分: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)