14

smoothScatterggplot でのみ、関数が行うことのようなものを取得しようとしています。N個の最もまばらな点をプロットすることを除いて、すべてを理解しました。誰でもこれで私を助けることができますか?

library(grDevices)
library(ggplot2)

# Make two new devices
dev.new()
dev1 <- dev.cur()
dev.new()
dev2 <- dev.cur()

# Make some data that needs to be plotted on log scales
mydata <- data.frame(x=exp(rnorm(10000)), y=exp(rnorm(10000)))

# Plot the smoothScatter version
dev.set(dev1)
with(mydata, smoothScatter(log10(y)~log10(x)))

# Plot the ggplot version
dev.set(dev2)
ggplot(mydata) + aes(x=x, y=y) + scale_x_log10() + scale_y_log10() + 
  stat_density2d(geom="tile", aes(fill=..density..^0.25), contour=FALSE) +
  scale_fill_gradientn(colours = colorRampPalette(c("white", blues9))(256))

ベース グラフィックス バージョンでは、最も「まばらな」100 点が平滑化された密度プロット上にプロットされていることに注意してください。まばらさは、ポイントの座標でのカーネル密度推定の値によって定義されます。重要なことに、カーネル密度推定は対数変換 (またはその他の座標変換) の後に計算されます。を追加することですべての点をプロットできます+ geom_point(size=0.5)が、まばらなものだけが必要です。

ggplot でこれを達成する方法はありますか? これには、実際には 2 つの部分があります。1 つ目は、座標変換後の外れ値を把握することであり、2 つ目は、それらの点のみをプロットすることです。

4

2 に答える 2