我需要在R中绘制一个条形图,然后使用par(new=T)
在新轴上放置一个散点图。
如果我设置xlim
,一切都很顺利:
xx=c(0,12)
k=barplot(1:10,xlim=xx)
par(new=T)
plot(x=k,y=1:10/2,xlim=xx,xaxt='n',yaxt='n')
axis(1,at=k,labels=1:10)
axis(4)
但是,我需要在不设置xlim
的情况下执行此操作。我认为par('usr')
可以解决我的问题,但我已经尝试了很长时间但没有成功。
以下是我正在使用的内容:
k=barplot(1:10)
xx=par('usr')[1:2]
par(new=T)
plot(x=k,y=1:10/2,xlim=xx,xaxt='n',yaxt='n')
axis(1,at=k,labels=1:10)
axis(4)
在这种情况下,x轴和新点未正确居中。我做错了什么?
万一以任何方式需要或有用,以下是R.Version()
的输出:
$platform
[1] "x86_64-pc-linux-gnu"
$arch
[1] "x86_64"
$os
[1] "linux-gnu"
$system
[1] "x86_64, linux-gnu"
$status
[1] ""
$major
[1] "3"
$minor
[1] "1.1"
$year
[1] "2014"
$month
[1] "07"
$day
[1] "10"
$`svn rev`
[1] "66115"
$language
[1] "R"
$version.string
[1] "R version 3.1.1 (2014-07-10)"
$nickname
[1] "Sock it to Me"
修改
这个肮脏的黑客(两次运行条形图)解决了这个问题,但它远远不是一个合适的解决方案:
k=barplot(1:10)
xx=par('usr')[1:2]
k=barplot(1:10,xlim=xx)
par(new=T)
plot(x=k,y=1:10/2,xlim=xx,xaxt='n',yaxt='n')
axis(1,at=k,labels=1:10)
axis(4)
根据?barplot
:
width
optional vector of bar widths. Re-cycled to length the
number of bars drawn. Specifying a single value will have no visible
effect unless xlim is specified.
当指定xlim时,条形图看起来不同。也许这会导致问题?
答案 0 :(得分:1)
您尝试使用add=TRUE
选项,但手动设置了轴。这将使任务复杂化,因为每个绘图将创建自己的骶骨和绘图设置。创建条形图后,更容易使用points
来叠加您的积分。
## set `ylim` to not "cut" the last point.
k=barplot(1:10,ylim=c(0,11))
## points will use the plot scales already created
points(x=k,y=1:10/2,col='red',pch=20,cex=4)
axis(1,at=k,labels=1:10)
## to set new different axes in the right
par(new=TRUE)
plot(x=k,y=1:10/2,type='n',xaxt='n',yaxt='n')
axis(4)