如何为成组的barplot添加轴中断? [英] How to add break in axis for grouped barplot?

查看:74
本文介绍了如何为成组的barplot添加轴中断?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

# set up data

x1=c(3,5,6,9,375,190);
x1
x2=c(2,2,3,30,46,60);
x2
data=rbind(x1,x2);
data
colnames(data)=c("Pig","Layer","Broiler","Dairy","Beef","Sheep")
rownames(data)=c("1980","2010")
data

# plot grouped bar by using barplot
barplot(data,
        beside=T, 
        ylab="Number of animal", 
        #cex.names=0.8, 
        #las=2, 
        col=c("darkblue","red")
)

# Since there are large differences in numbers, so I want to add a break between 200 to 340 as below:
data_T=t(data);
data_T
#install.packages("reshape")
library(reshape)
mdata <- melt(data_T, id=c("1980","2010"));
mdata
colnames(mdata)=c("Animal","Year",'value');
mdata
gap.barplot(mdata$value,
            gap=c(200,340),
            xlab="Animal",
            ytics=c(0,50,100,150,200,300,350,400),
            ylab="Number of animal",
            xaxlab=mdata$Animal,
            xaxt="n")
# xaxt="n" is esentiall to remove everything from x axis (e.g. a clean x axis)
# then define a axis using the following 
axis(side = 1, at = seq_along(mdata$Animal),mdata$Animal,tick = FALSE)
abline(h=seq(200,205,.001), col="white")  # hiding vertical lines
axis.break(axis=2,breakpos=202.5,style="slash") # break the left Y axis

但这不是我想要的,因为(gap.barplot)中的条没有被分组为先前的条形图:(然后我的问题是如何在分组的条形图中制作y轴折断?结合barplot和gap.barplot的功能?非常感谢您的帮助!

But this is not exactly what I want because the bars (in gap.barplot) are not grouped as previous barplot figures :(Then my questions is how to make a broken y axis in grouped barplot figures?In another words, how to combine the function of barplot and gap.barplot?Thanks a lot for your kind help!

推荐答案

非常感谢gap.barplot的作者Jim Lemon,他通过电子邮件回复了我(请参阅下文). 有了他的代码,我得到了我想要的. 您可能需要安装和加载软件包plotrix.

Great thanks to Jim Lemon, the author of gap.barplot, he replied me via email(see below). With his code, I got exactly what I want. You may need to install and load package plotrix.

魏, gap.barplot函数尚未进行分组条形(至今).你可能可以 得到您想要的东西:

Hi Wei, The gap.barplot function doesn't do grouped bars (yet). You can probably get what you want with this:

#install.packages("plotrix") # only need to install once
library(plotrix)
newdata<-data
newdata[newdata>200]<-newdata[newdata>200]-140
barpos<-barplot(newdata,names.arg=colnames(newdata),
ylim=c(0,250),beside=TRUE,col=c("darkblue","red"),axes=FALSE)
axis(2,at=c(0,50,100,150,200,235),
labels=c(0,50,100,150,200,375))
box()
axis.break(2,210,style="gap")

吉姆

这篇关于如何为成组的barplot添加轴中断?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆