相关疑难解决方法(0)

使用第三个特征作为颜色可视化大的点集 - 一种提高速度的方法

我有一个非常大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默认设置.所以我的问题是:

  • 可以将默认fillgeom_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 data-visualization ggplot2

8
推荐指数
2
解决办法
249
查看次数

R中的数据探索:快速显示大矩阵的热图?

如何快速可视化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中的矩阵?一个理想的解决方案需要一两行.

matlab visualization r data-visualization matrix

1
推荐指数
1
解决办法
224
查看次数

标签 统计

data-visualization ×2

r ×2

ggplot2 ×1

matlab ×1

matrix ×1

visualization ×1