我已经查看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上限的同时将图表置于零基础之下?
答案 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()