ggplot2は、サイズ変更/変形のようです。ggplot2はサイズの変更/変形です - 元のデータを元に戻す方法は?
は、以下の
require(ggplot2); require(dplyr)
set.seed(1234)
d <- data.frame(x = rnorm(100), y = rnorm(100), size = runif(100))
p.out <- ggplot(d, aes(x, y, size = size)) + geom_point()
p.data <- p.out %>% layer_data %>% arrange(x)
d2 <- d %>% arrange(x)
head(d2)
x y size
## 1 -2.345698 -0.50247778 0.7757949
## 2 -2.180040 -0.31611833 0.3802893
## 3 -1.806031 -0.37723765 0.2547007
## 4 -1.629093 -1.65010093 0.2722072
## 5 -1.448205 0.08005964 0.1999333
## 6 -1.390701 -1.12376279 0.5117742
p.data %>% select(size, x, y) %>% head
## size x y
## 1 5.407443 -2.345698 -0.50247778
## 2 4.084550 -2.180040 -0.31611833
## 3 3.523348 -1.806031 -0.37723765
## 4 3.608829 -1.629093 -1.65010093
## 5 3.234916 -1.448205 0.08005964
## 6 4.579018 -1.390701 -1.12376279
xとyは
lm(y ~ x, p.data)
## Call:
## lm(formula = y ~ x, data = p.data)
##
## Coefficients:
## (Intercept) x
## 0.03715 -0.02608
lm(y ~ x, d)
## Call:
## lm(formula = y ~ x, data = d)
##
## Coefficients:
## (Intercept) x
## 0.03715 -0.02608
元のデータと一致するように見えるが、サイズの変数が突然変異/何とか
cor(p.data$size, d2$size)
## [1] 0.9783827
lm(y ~ x, data = d, weights = size)
## Call:
## lm(formula = y ~ x, data = d, weights = size)
##
## Coefficients:
## (Intercept) x
## -0.02586 -0.11537
lm(y ~ x, p.data, weights = size)
## Call:
## lm(formula = y ~ x, data = p.data, weights = size)
##
## Coefficients:
## (Intercept) x
## 0.009372 -0.065445
ggplot2がいるようだ変換に思える考えてみましょう元のデータを使用すると正しいプロットが生成されますが、再現できないようですプロットはlayer_data()
またはggplot_build()
です。 p.data
の変数size
を元のサイズ変数に戻すにはどうすればよいですか?
ニースが見つかりました。 'p.out $ data'はどうですか? –
ああよかった!私は 'p.out $ data'について知らなかった。' p.out $ data'は、実際のデータを 'cor(p.out.data $ size、d2 $ size)'が1になるように与える私はxですべてを整理しますが、 'cor(p.out.data $ size、p.data $ size)'は0.978に等しいです。私はここで何が起こっているのか分かりません。上記のいくつかの方法を試したところ、私のコードにエラーがあるとは思わない。結局、p.out $データは私に何が欲しいのですか?私が受け入れるでしょう... – chandler