R并排条形图,按箱子大小的比例尺

R并排条形图,按箱子大小的比例尺,r,bar-chart,R,Bar Chart,我试图通过我的箱子大小(colnames)来缩放条形图的宽度,以显示数据的偏斜(例如,11-10箱将比251-500箱窄)。我使用并排条形图,将行名用作组(a、B)。似乎width=参数只取前两个宽度值,并为每个组指定一个,而不是分别为每个条指定宽度值。有人能建议一种方法吗 df <- rbind(runif(10,0,1), runif(10,0,1)) rownames(df) <- c("A", "B") colnames(df) <- c("0", "1-10", "1

我试图通过我的箱子大小(colnames)来缩放条形图的宽度,以显示数据的偏斜(例如,11-10箱将比251-500箱窄)。我使用并排条形图,将行名用作组(a、B)。似乎width=参数只取前两个宽度值,并为每个组指定一个,而不是分别为每个条指定宽度值。有人能建议一种方法吗

df <- rbind(runif(10,0,1), runif(10,0,1))
rownames(df) <- c("A", "B")
colnames(df) <- c("0", "1-10", "11-20", "21-30", "31-40", "41-50", "51-75",    "76-125", "126-250", "251-500") 
bar_width = rep(c(1, rep(10,5), 25, 50, 125, 250), each=2)

barplot(df, width=bar_width, beside=T)

df下面是一个在base R绘图中的尝试:

bp <- barplot(c(df), width=bar_width, 
        space=rep(c(40,0),ncol(df))/mean(bar_width), col=gray.colors(nrow(df)))
axis(1, at=colMeans(matrix(bp,nrow=2)), labels=colnames(df),
     lwd=0, lwd.tick=1, cex.axis=0.7, las=2)

bp不是答案,但这可能是相关的-严格来说,
df
这里是一个矩阵,而不是顾名思义的data.frame。@最近的邮件很有用。看起来还是很乱,也许有更好的办法?我应该能解决这个问题。谢谢你:图书馆(tidyverse);df%%>%as.data.frame()%%>%rownames\u to\u column('var')%%>%gather(range,value,-var)%%>%mutate(range=factor(range,levels=unique(range),bar\u width=scales::rescale(bar\u width,to=c(.1,1))%%>%ggplot(aes(x=range,y=value,width=bar\u width,fill=var))+geom\u col()
@alistaire这很好。我需要努力让他们并排,但这是一个很好的方法