我有一个非常大5e5的(x, y)坐标数据集(大约行)和附加功能z.它是这样的:
x <- rnorm(1e6, 0, 5)
y <- rnorm(1e6, 0, 10)
dist <- sqrt(x^2 + y^2)
z <- exp(-(dist / 8)^2)
Run Code Online (Sandbox Code Playgroud)
我想用一个z用作颜色美学的特征来绘制它们.但是geom_point这么简单的数据集需要一段时间:
data.frame(x, y, z) %>%
ggplot() + geom_point(aes(x, y, color = z))
Run Code Online (Sandbox Code Playgroud)
所以我认为我需要一种以某种方式聚合积分的方法.一种方法是将平面划分为一些小方块,并平均z位于正方形中的点的所有值.但从长远来看,它可能有点麻烦,使用一些已有的工具可能会更好.所以我认为geom_hex在我的情况下看起来很好的geom.但fill审美是count默认设置.所以我的问题是:
fill值geom_hex轻松更改为z功能的平均值吗?z可以在六边形内平均值然后绘制?建议解决方案的比较:
library(microbenchmark)
microbenchmark(
'stat_summary_hex' = {data.frame(x, y, z) %>%
ggplot( aes(x, y, z=z )) + …Run Code Online (Sandbox Code Playgroud) 如何快速可视化R中的大型矩阵?
我有时使用大型数字矩阵(例如3000 x 3000),并且快速可视化它们是一个非常有用的质量控制步骤.这在我以前选择的语言Matlab中非常简单快捷.例如,显示1000x1000矩阵需要0.5秒:
rand_matrix = rand(1000,1000);
tic
imagesc(rand_matrix)
toc
>> Elapsed time is 0.463903 seconds.
Run Code Online (Sandbox Code Playgroud)
我想在R中具有相同的能力,但遗憾的是,在R中,可视化矩阵似乎非常缓慢.例如,使用image.plot()相同的随机矩阵需要10秒以上才能显示:
require(tictoc)
require(image.plot)
mm = 1000
nn = 1000
rand.matrix = matrix(runif(mm*nn), ncol=mm, nrow=nn)
tic("Visualizing matrix")
image.plot(rand.matrix)
toc()
> Visualizing matrix: 11.744 sec elapsed
Run Code Online (Sandbox Code Playgroud)
随着矩阵变大,问题变得更糟.例如,与Matlab中的秒数相比,3000x3000矩阵在R中可视化需要几分钟.这显然不适用于数据探索.我尝试过ggplot,而熔化+ geom_raster()仍然需要一分钟.
我究竟做错了什么?有没有一种快速的方法可视化R中的矩阵?一个理想的解决方案需要一两行.