3

私は cygwin で R を使用しており、いくつかの基本的なグラフィックスをプロットしようとしています。以下は、Paul Murrell の論文の 1 つからの簡単な例です。

library(grid)
x <- rnorm(50)
y <- x + rnorm(50, 1, 2)
rx <- range(x)
dx <- diff(rx)
ry <- range(y)
dy <- diff(ry)
max <- max(rx, ry)
min <- min(rx, ry)
r <- c(min(rx, ry), max(rx, ry))
d <- diff(r)
scale <- r + c(-1, 1) * d * 0.05
extscale <- c(min(scale), max(scale) + diff(scale) * 1/3)
lay <- grid.layout(2, 2, 
                   widths = unit(c(3, 1), "inches"), 
                   heights = unit(c(1, 3), "inches"))
vp1 <- viewport(w = unit(4, "inches"), h = unit(4, "inches"), 
                layout = lay, xscale = extscale, yscale = extscale)
grid.newpage()
pushViewport(vp1)
grid.rect()
grid.xaxis()
grid.text("Test", y = unit(-3, "lines"))
grid.yaxis()
grid.text("Retest", x = unit(-3, "lines"), rot = 90)
vp2 <- viewport(layout.pos.row = 2, layout.pos.col = 1, 
                xscale = scale, yscale = scale)
pushViewport(vp2)
grid.lines()
grid.points(x, y, gp = gpar(col = "blue"))

これはうまくプロットされます。ただし、次の行をプログラムに追加するとします。

grid.lines(x, y, gp = gpar(col = "red"))

ラインはいたるところにあります。線が点を順番に結んでいると思っていました。私が書いたいくつかのコードで同様の問題がありましたが、線はうまくプロットされますが、点はプロットされません。

助けていただければ幸いです。ありがとう。

4

1 に答える 1

3

何らかの理由で、grid.points()異なるgrid.lines()「デフォルト単位」があります。(これらは、単位が関連付け"native"られ"npc"ていない数値ベクトルを関数に渡すときに使用される単位です。)

args(grid.lines)
# function (x = unit(c(0, 1), "npc"), y = unit(c(0, 1), "npc"), 
#     default.units = "npc", arrow = NULL, name = NULL, gp = gpar(), 
#     draw = TRUE, vp = NULL)     
args(grid.points)
# function (x = stats::runif(10), y = stats::runif(10), pch = 1, 
#     size = unit(1, "char"), default.units = "native", name = NULL, 
#     gp = gpar(), draw = TRUE, vp = NULL) 

grid.lines()簡単な解決策は、で使用されるものと一致するようにの既定の単位を明示的に設定することですgrid.points()

grid.lines(x, y, gp = gpar(col = "red"), default.units = "native")

ここに画像の説明を入力

于 2012-09-11T23:01:35.903 に答える