【发布时间】:2014-03-29 17:50:27
【问题描述】:
我需要一个两个 y 轴图形。 hrbrmstr 建议使用简单的绘图。但是在将图表调整到我的设置时,我观察到我无法在右侧添加 ylab,出现连线错误:
Error in axis(4, ylim = c(0, 1), col = "black", col.axis = "black", las = 1, :
'labels' is supplied and not 'at'
这是可以避免的吗?
看代码底线fprSOURCE OF ERROR
featPerf <- data.frame( expS=c("1", "2", "3", "4"),
exp1=c(1000, 0, 0, 0),
exp2=c(1000, 5000, 0, 0),
exp3=c(1000, 5000, 10000, 0),
exp4=c(1000, 5000, 10000,20000),
accuracy=c(0.4, 0.5, 0.65, 0.9) )
# make room for both axes ; adjust as necessary
par(mar=c(5, 5, 5, 7) + 0.2)
# plot the bars first with no annotations and specify limits for y
#barplot(as.matrix(featPerf[,2:5]), axes=FALSE, xlab="", ylab="", ylim=c(0, max(colSums(featPerf[2:5]))))
barplot(as.matrix(featPerf[,2:5]), axes=FALSE, xlab="", ylab="", beside=TRUE)
# make the bounding box (or not...it might not make sense for your plot)
#box()
# now make the left axis
axis(2, ylim=c(0, max(colSums(featPerf[2:5]))), col="black", las=1)
# start a new plot
par(new=TRUE)
# plot the line; adjust lwd as necessary
plot(x=1:4, y=featPerf[,6], xlab="Experiments", ylab="Abs. # of Features", axes=FALSE, type="l", ylim=c(0,1), lwd=5)
# annotate the second axis -- SOURCE OF ERROR -> VVVVVVVVVVVVVVVVVV
axis(4, ylim=c(0,1), col="black", col.axis="black", las=1, labels="Accuracy")
【问题讨论】:
-
labels的参数axis定义了在刻度线旁边打印的内容,而不是轴“名称”。您没有定义刻度的位置,这就是您收到此错误的原因。 -
@Roland 谢谢。我怎样才能避免这种情况?能否提供最后一行的代码
axes(4, ylim=... -
我不确定你想在那里做什么。不要将值传递给
labels?研究文档。 -
@Roland 我试图在这里理解问题:statmethods.net/advgraphs/axes.html(下到“Axes”)但是,他们说用
labels=可以把ylab对应的命令,创建整个图时(这里不可能直接因为有两个 Y 轴) -
我看不出他们在哪里说过这样的话。事实上,他们展示了如何使用
mtext向右轴添加标签。
标签: r plot axis-labels