我有以下内容:
require(ggplot2)
p <- ggplot() # don't put aes() here, do it separately
df <- data.frame(x=X, y=Y) # ggplot requires dataframes
p <- p + geom_line(data=df, aes(x=X, y=Y))
# Now we plot the graphs using ggplots and color the segments
p <- p + geom_rect(data=peaks,
aes(xmin=xstart, xmax=xend,
ymin = -Inf, ymax = Inf,
fill = col),
alpha=0.4)
# Open the graphical window for displaying the graph
quartz()
print(p)
message("Press Return To Continue")
invisible(readLines("stdin", n=1))
最后一行确保我的图形窗口在脚本终止时不会打开和关闭。这样可以正常工作,除了我在显示时无法调整图形窗口的大小。我的光标无限旋转。
除了在quartz()
中手动指定窗口框架外,还有什么办法可以调整图形窗口的大小吗?
答案 0 :(得分:2)
这是here的暗示。
使用readLines()
(对于基础图)或locator()
(对于grid::grid.locator()
),而不是使用ggplot2
来保持R脚本等待。这不仅可以保持脚本运行,还可以使绘图窗口保持活动状态并可调整大小。在Windows上,这对我有用:
library(ggplot2)
X11() #quartz() on OSX
ggplot(mtcars, aes(mpg, wt)) + geom_line()
grid::grid.locator()
或者
X11() #quartz() on OSX
plot(mtcars$mpg, mtcars$wt)
locator()
locator()
和grid::grid.locator()
之间的特殊区别在于,第一个将允许您选择任意数量的点,而第二个只允许一个点,如果您错过了点击,可能会导致图表关闭。你可以找到here的替代品,或者只是使用replicate(10, grid::grid.locator())
之类的东西。
修改强>
这是一个修改,应该修复评论中提到的两个问题。
我们可以在图形设备处于活动状态时使系统休眠,而不是readLines()
或locator()
。由于窗口关闭后设备应更改回null device
,我们可以将其作为条件使用:
library(ggplot2)
X11() #quartz() on OSX
ggplot(mtcars, aes(mpg, wt)) + geom_line()
while(dev.cur() != 1) Sys.sleep(1)
print("Still running".)
我认为这适用于任何操作系统,但另一个(特定于操作系统)选项类似于while(names(dev.cur()) == "windows")
。