【问题标题】:R plot multiple line plots (3) against single bar plotR绘制多条线图(3)对单条图
【发布时间】:2023-03-12 16:37:01
【问题描述】:

我正在尝试针对单个条形图绘制多条线图(在此示例中,它已分组但不一定要分组),但我遇到了一些以奇怪方式调整左 y 轴大小的问题。有两条线时似乎还可以,但是当有更多线时将轴向外延伸,因此比例错误并且与条不对齐。

我最终需要在左右 y 轴上自定义标签的情况,因此在代码底部使用 axis。在实际实现中,我将在左侧动态使用“M”代表百万或“K”代表千,右边使用“%”。

非常感谢任何帮助。

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 )

【问题讨论】:

  • 您在第一次调用 barplot 时使用了 labels 会收到警告。你应该在你的代码中解决这个问题。

标签: r plot


【解决方案1】:

您可以在第二行和第三行使用lines() 参数,一切正常。这是第三行的示例:

#par(new=T) 
lines(colMeans(bp), y4, type="o", col="red", lwd=3, lty=1) 
points(colMeans(bp), y4, pch=20)

【讨论】:

    猜你喜欢
    • 2019-10-27
    • 1970-01-01
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    • 2014-06-14
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多