你在给x赋值的时候,里面用了“1=c(21,43)”这样的语句,这相当于是给1这个常数赋值,是不被允许的。
可以把“1=c(21,43)”改成“v1=c(21,43)”之类的,然后names.arg写成names.arg=1:18。把你的代码改了一下:
x<-data.frame(v1=c(21,43),v2=c(45,78),v3=c(34,67),v4=c(55,65),v5=c(67,45),v6=c(31,42),v7=c(27,42),v8=c(24,27),v9=c(25,38),v10=c(30,42),v11=c(14,22),v121=c(62,83),v13=c(25,28),v14=c(15,19),v15=c(34,51),v16=c(9,10),v17=c(80,123),v18=c(23,29)); <br />
barp(x,names.arg=1:18,legend.lab=c("A","B"), <br />
legend.pos="e",col=c("blue","red"),main="Number of A and B of each product", <br />
xlab="Product ID",ylab="Number",ylim=c(1,123),staxx=TRUE,staxy=TRUE,cex.axis=0.5,cylindrical=TRUE,shadow=TRUE); <br />
如果原始数据已经存在,可以直接把原始的那个数据框转置,不需要再手动输入数据。另外为了美观应该把ylim的上限适当改大些,比如130左右。