是否可以像在Excel中一样创建具有不同Y轴的组合柱形图和折线图?我想自动生成图表,其中折线图是Good -Bad比率,条形图是另一个变量的给定间隔的Universe百分比。左Y轴是Good-Bad比率,右Y轴是宇宙的百分比。我想用格子做这个,但任何建议都会受到赞赏。
答案 0 :(得分:4)
require(plotrix) # followed by a slight variation of the first example of twoord.plot
twoord.plot(2:10,seq(3,7,by=0.5)+rnorm(9), type=c("bar", "l"),
1:15,rev(60:74)+rnorm(15),xlab="Sequence",
ylab="Ascending values",rylab="Descending values",
main="Plot with two ordinates - points and lines")
评论格式似乎有问题,所以我也把代码放在这里。 rx和lx向量需要是数字,但xticklab参数可用于正确标记:
twoord.plot(lx=1:10, ly= df$Pct, rx=1:10, ry= df$Rate, type=c('bar','l'),
xticklab=df$Segment, xlab='Segment', ylab='Percent of Good', rylab='Good Rate')
答案 1 :(得分:1)
我知道这个问题已经有了接受的答案,但我只是想添加另一个选项。如果您发现自己处于“基础”R以外的选项有限的情况下(例如,如果您在不同的团队中工作并且需要最高的代码兼容性,我最近发现自己的情况),您可以随时使用
par(new=TRUE)
命令将一个绘图绘制在另一个绘图之上 - 因此,绘制条形图和线条图。这里的诀窍(感谢this post)是对线条图和条形图使用“plot”,只需使用“type ='h'”和“lend”和“lwd”选项来创建一个条形图线图。
这只复制了上面的代码,仅使用“基本”函数:
## Set up data
line.x <- 2:10
bar.x <- 2:10
bar.y <- seq(3,7,by=0.5)+rnorm(9)
bar.x <- 1:15
bar.x <- 2:10
line.x <- 1:15
line.y <- rev(60:74)+rnorm(15)
x.range <- range(bar.x, line.x)
## Plot the data
par(mar=c(5,4,4,4)+0.1) ## Make enough room for both labels
plot(y=bar.y, x=bar.x, type='h', lwd=25, lend=4, xlim=x.range, xlab="Sequence", ylab="", main="Plot with two ordinates - points and lines")
par(new=TRUE)
plot(y=line.y, x=line.x, col='red', type='l', xlim=x.range, axes=FALSE, xlab='', ylab='')
## Set up the axes and labels
axis(side=4, col='red', labels=FALSE)
at = axTicks(4)
mtext(side = 4, text = at, at = at, col = "red", line = 1)
## Add x-axis labels; this allows customization of the how far out labels are
mtext(text='Descending values', side=4, line=2, col='red')
mtext(text='Ascending values', side=2, line=2)
答案 2 :(得分:0)
如果您想手动执行此操作,请查看TeachingDemos包中的updateusr函数。
这仅适用于基本图形,而不适用于格子。