README.md

scattermore2 🎆

Fast Scatterplots with More Points

R-CMD-check pkgdown test-coverage

Installation 💻

devtools::install_github('teri934/scattermore2')

Short Description 📝

R package with implemented C-based conversion of large scatterplot data to rasters plus other operations such as data blurring or data alpha blending. Speeds up plotting of data with millions of points. Webpage for overview

Simple Usage 🖱️

library(scattermore2)

Make Histograms...

histogram <- scatter_histogram(cbind(rnorm(1e5), rnorm(1e5)), xlim=c(-5,5), ylim=c(-5,5))
blurred_histogram <- apply_kernel_histogram(histogram, kernel_pixels=10)
rgbwt <- histogram_to_rgbwt(blurred_histogram)
raster <- rgba_int_to_raster(rgbwt_to_rgba_int(rgbwt))
plot(raster)

... Colorize Points...

rgbwt <- scatter_points_rgbwt(points, RGBA= c(64,128,192,50), xlim=c(-5,5), ylim=c(-5,5))
blurred_rgbwt <- apply_kernel_rgbwt(rgbwt)
raster <- rgba_int_to_raster(rgbwt_to_rgba_int(blurred_rgbwt))
plot(raster)

... Merge...

p1 <- scatter_points_rgbwt(points, RGBA= c(64,128,192,50), xlim=c(-5,5), ylim=c(-5,5))
p2 <- scatter_points_rgbwt(points, RGBA= c(192,128,64,50), xlim=c(-5,5), ylim=c(-5,5))

merged <- merge_rgbwt(p1,p2)
raster <- rgba_int_to_raster(rgbwt_to_rgba_int(merged))
plot(raster)

... and Blend

p1 <- scatter_points_rgbwt(points, RGBA= c(64,128,192,50), xlim=c(-5,5), ylim=c(-5,5))
p2 <- scatter_points_rgbwt(points, RGBA= c(192,128,64,50), xlim=c(-5,5), ylim=c(-5,5))

p1_frgba <- rgbwt_to_rgba_float(p1)
p2_frgba <- rgbwt_to_rgba_float(p2)
blended <- blend_rgba_float(p1_frgba,p2_frgba)
raster <- rgba_int_to_raster(rgba_float_to_rgba_int(blended))
plot(raster)

You can find more information in vignettes.

Really Fast ⏩

Compare scattermore2 with default R functionality. Scattermore2 only creates raster graphics for the plots, its result can be plotted afterwards.

# create 10 million 2D datapoints
points <- cbind(rnorm(1e7),rnorm(1e7))
# plot the datapoints and see how long it takes
system.time(plot(rgba_int_to_raster(rgbwt_to_rgba_int(scatter_points_rgbwt(points, RGBA= c(64,128,192,50), xlim=c(-5,5), ylim=c(-5,5))))))

   user  system elapsed 
  0.743   0.216   0.959 

You should see something like this:

Now the default:

system.time(plot(points, pch='.', xlim=c(-5,5), ylim=c(-5,5), col=rgb(0.25,0.5,0.75,0.04)))

   user  system elapsed 
  6.944   0.060   7.012 

Scattermore2 and Archaelogy 🦴

Nice examples for creating histograms from archaelogical data. Smithsonian Institute provides a lot of interesting data, including mammoth skeleton and T-rex skeleton eating triceratops skeleton.

   



Teri934/scattermore2 documentation built on April 9, 2022, 12:44 a.m.