我有以下数据帧:
Catergory Reason Species
1 Decline Genuine 24
2 Improved Genuine 16
3 Improved Misclassified 85
4 Decline Misclassified 41
5 Decline Taxonomic 2
6 Improved Taxonomic 7
7 Decline Unclear 41
8 Improved Unclear 117
我正在尝试制作一个分组的条形图,物种作为高度,然后是2种颜色的catergory .
我会发布一张我所拥有的图像,但我没有足够的声望点...但这是我的代码:
Reasonstats<-read.csv("bothstats.csv")
Reasonstats2<-as.matrix(Reasonstats[,3])
barplot((Reasonstats2),beside=T,col=c("darkblue","red"),ylab="number of
species",names.arg=Reasonstats$Reason, cex.names=0.8,las=2,space=c(0,100)
,ylim=c(0,120))
box(bty="l")
现在我想要的是,不必将两个条形标记两次并将它们分开,我已经尝试将空间值更改为各种各样的东西,它似乎没有将条形移开 . 谁能告诉我我做错了什么?
4 回答
与ggplot2:
不是
barplot
解决方案,而是使用lattice
和barchart
:有几种方法可以在R中进行绘图;
lattice
是其中之一,并且始终是一个合理的解决方案,1到@agstudy . 如果要在基本图形中执行此操作,可以尝试以下操作:这就是我所做的:我创建了一个包含两列的矩阵(因为您的数据在列中),其中列是
Decline
和Improved
的物种计数 . 然后我将这些类别作为列名 . 我也把Reason
做成了行名 .barplot()
函数可以在这个矩阵上运行,但是希望数据是行而不是列,所以我给它提供了一个转置版本的矩阵 . 最后,我删除了一些不再需要的barplot()
函数调用的参数 . 换句话说,问题是您的数据没有像barplot()
想要的那样设置 .我为
barplot()
写了一个名为bar()
的函数包装器来做你想做的事情,因为我需要经常做类似的事情 . 该函数的Github链接是here . 复制并粘贴到R后,即可一个便利是它将使用分类变量中的级别名称(例如,"Decline"和"Improved")在图表上添加图例 . 如果您的每个级别都有多个观察值,它也可以绘制误差线(这里不适用,因此
errbar=FALSE