首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R图多行图(3)对单条图

R图多行图(3)对单条图
EN

Stack Overflow用户
提问于 2014-04-16 08:45:53
回答 1查看 404关注 0票数 0

我试图在单个条形图上绘制多行图(在本例中,它是分组的,但不必分组),但我遇到了一些问题,即左y轴以奇怪的方式调整大小。当有两条线的时候,它看起来很好,但是当有更多的线的时候,就把轴延伸出去,这样比例就错了,而且不和条形线成直线。

我需要在这样的情况下结束:我可以在左、右y轴上定制标签,因此在代码底部使用axis。在实际的实现中,我将动态地使用“M”表示百万,对左边使用“K”,在右边使用“%”。

任何帮助都将不胜感激。

代码语言:javascript
复制
x = c("a","b","c","d") 
y= cbind(c(50,40,30,20), c(40,30,20,10)) 
y2 = c(0.80,0.65,0.75,0.50)
y3 = c(0.30,0.20,0.50,0.60)
y4 = c(0.20,0.30,0.40,0.45) 
#
par(mar=c(5,8,3,5))
bp <- barplot(t(y), beside=TRUE, las=1, names.arg=x, axes=TRUE, ylim=c(0,max(y)+10),         labels=c("0","10 M","20 M","30 M","40 M","50 M","60 M")) 
xlim <- c(floor(min(bp)), ceiling(max(bp))) 
# 
par(new=T) 
plot(colMeans(bp), y2, type="o", col="black", lwd=3, lty=1, xaxt="n", yaxt="n", xlab="",   ylab="", xlim = xlim) 
points(colMeans(bp), y2, pch=20)

par(new=T) 
plot(colMeans(bp), y3, type="o", col="red", lwd=3, lty=1, xaxt="n", yaxt="n", xlab="",   ylab="", xlim = xlim) 
points(colMeans(bp), y3, pch=20)

par(new=T) 
plot(colMeans(bp), y4, type="o", col="red", lwd=3, lty=1, xaxt="n", yaxt="n", xlab="", ylab="", xlim = xlim) 
points(colMeans(bp), y4, pch=20)

axis(side=2,  at=c(0,0.10,0.20,0.30,0.40,0.50,0.60), labels=c("0","10 M","20 M","30 M","40 M","50 M","60 M"), las=1, pos=0.555)
axis(side=4, pretty(c(0,max(y2))), ylim=c(0,max(y2)), col='black', ylab='', las=1 )
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-16 09:12:29

您可以为第二行和第三行使用lines()参数,everything可以正常工作。下面是第三行的一个示例:

代码语言:javascript
复制
#par(new=T) 
lines(colMeans(bp), y4, type="o", col="red", lwd=3, lty=1) 
points(colMeans(bp), y4, pch=20)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23104304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档