R barplot中的点数比例

时间:2016-07-27 19:03:53

标签: r plot graph visualization data-science

我在多轴条形图中遇到麻烦。我在同一图表中有一个带有条和点的X,Y轴。关键是我必须以不同的比例展示它们

虽然我可以正确地显示两个(条和点),但当我尝试在左右轴上设置不同的比例时问题就出现了。我不知道如何更改附加轴刻度,以及如何将红点绑定到右轴,将条形图绑定到左侧轴。

这是我的代码和我得到的:

labels <- value
mp <- barplot(height = churn, main = title, ylab = "% churn", space = 0, ylim = c(0,5))
text(mp, par("usr")[3], labels = labels, srt = 45, adj = c(1.1,1.1), xpd = TRUE, cex=.9)

# Population dots
points(popul, col="red", bg="red", pch=21, cex=1.5)

# Churn Mean
media <- mean(churn)
abline(h=media, col = "black", lty=2)

# Population scale
axis(side = 4, col= "red")

ylim= c(0,50)

ylim= c(0,5)

我想要的是让左(灰色)轴在ylim = c(0,5)处,并且条形图绑定到该轴。并且右边(红色)轴在ylim = c(0,50)处,点与该轴绑定... 目标是用不同的轴表示同一图表中的条形和点。

希望我成功地解释了自己。 谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

这是一个玩具示例。唯一的“技巧”是在创建条形图时存储条形中心的x位置和x轴的限制,以便您可以使用相同的x轴覆盖绘图并将点添加到条形的中心。 xaxs = "i"调用中的plot.window表示使用给定的确切值而不是通过常量(默认行为)进行扩展。

set.seed(1234)
dat1 <- sample(10, 5)
dat2 <- sample(50, 5)
par(mar = c(2, 4, 2, 4))
cntrs <- barplot(dat1)
xlim0 <- par()$usr[1:2]
par(new = TRUE)
plot.new()
plot.window(xlim = xlim0, ylim = c(0, 50), xaxs = "i")
points(dat2 ~ cntrs, col = "darkred")
axis(side = 4, col = "darkred")

enter image description here