在绘制绘图之前是否可以查询轴限制?

时间:2016-04-28 22:44:00

标签: r plot

我已经查看this question但是给出的解决方案不足以用于我的用例。

我想要零基础的图形,同时保留原始(自动生成的)上部 var listOfLists = new List<List<int>> { new List<int> {1, 2, 3, 4}, new List<int> {5, 6, 7, 8}, new List<int> {9, 10} }; IEnumerable<int> combined = new List<int>(); combined = listOfLists.Aggregate(combined, (current, list) => current.Concat(list)).ToList(); ,而不绘制然后重新绘制图形。

这是我尝试过的,但这不起作用,因为ylim似乎只在情节已经绘制之后的情节上提供了上限。

par

以下是一些运行此操作的示例数据。

#!/usr/bin/Rscript


args <- commandArgs(trailingOnly = TRUE)
data <- read.csv(args[1],head=F)
pdf(paste(args[1], ".pdf", sep=''))
plot(seq(1,dim(data)[1]), data$V1, ylim=c(0,par('usr')[4]))
dev.off()

如何在保留原始y上限的同时将图表置于零基础之下?

2 个答案:

答案 0 :(得分:3)

如果您使用默认设置yaxs = "r",则可以使用有关如何从xaxs部分计算y限制的信息来计算上限({{1}在yaxs帮助页面上引用xaxs部分}:

  

xaxs
  轴间距计算的样式用于x轴。   可能的值是&#34; r&#34;,&#34; i&#34;,&#34; e&#34;,&#34; s&#34;,&#34; d&#34;。风格一般   如果给定,则由数据范围或xlim控制   风格&#34; r&#34; (定期)   首先将数据范围扩展4%,然后找到   一个带有漂亮标签的轴,适合扩展范围。

par

我们可以通过绘图然后询问它来看到这是上限的值(在默认设置下):

upper_lim <- diff(range(x)) * 0.04 + max(x)
upper_lim
#[1] 200.2

数据

plot(seq_along(x$V1), x$V1)
par("usr", no.readonly = TRUE)[4]
# [1] 200.2


plot(seq_along(x$V1), x$V1, ylim = c(0, upper_lim))

答案 1 :(得分:0)

是。可能。有一个参数可以让plot完成所有设置,但会抑制绘图。我认为它是plot="n"。然后,您可以使用par(&#34; usr&#34;)获取所有坐标。 (从SFBay下的BART列车发送,因此当时无法访问R控制台。)

type = "n"中记录了?plot。绘图代码将是:

Y <- scan(text="117
190
189
189
189
191
192
193
194
197");plot(seq(1,length(Y)), Y, type="n") # plots to the interactive device
 opar=par()

pdf( "Y.pdf"); # needed to get the 'usr' value  before resetting `par` with new device
   plot(seq(1,10),Y, ylim=c(0,opar$usr[4]))
dev.off()