我试图得到类似的东西smoothScatter
功能呢,只有在ggplot。 我想通了一切,除了绘制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做到这一点? 实际上有两个环节进行。 首先是要弄清楚什么异常值后的坐标转换,第二个是唯一的绘制这些点。