Programmatically generated fish drawings via ggplot2 based on fishdraw Javascript library. Note: You need to install nodejs before using the rfishdraw package.
Installing nodejs under windows from nodejs.
brew search node brew install node@14 brew link node@14 node --version sudo apt-get install nodejs Install current official release:
install.packages("rfishdraw")Install development versions from GitHub with:
library(devtools) install_github("Otoliths/rfishdraw",build_vignettes = TRUE)library("rfishdraw")custom_params(path = "./fishdraw.js", save = getwd(), body_curve_type = 0, body_curve_amount = 0.85, body_length = 420, body_height = 90, scale_type = 1, scale_scale = 1, pattern_type = 3, pattern_scale = 1, dorsal_texture_type = 1, dorsal_type = 0, dorsal_length = 100, dorsal_start = 8, dorsal_end = 27, wing_texture_type = 0, wing_type = 0, wing_start = 6, wing_end = 6, wing_y = 0.7, wing_length = 130, wing_width = 10, pelvic_start = 9, pelvic_end = 14, pelvic_length = 85, pelvic_type = 0, pelvic_texture_type = 0, anal_start = 19, anal_end = 29, anal_length = 50, anal_type = 0, anal_texture_type = 0, tail_type = 0, tail_length = 75, finlet_type = 0, neck_type = 0, nose_height = 0, mouth_size = 8, head_length = 30, head_texture_amount = 60, has_moustache = 1, moustache_length = 10, has_beard = 0, has_teeth = 1, teeth_length = 8, teeth_space = 3.5, beard_length = 30, eye_type = 0, eye_size = 10, jaw_size = 1, jaw_open = 1) get_polylines(path = "inst/fishdraw.js", format = "smil", output = "animated.svg", draw_type = "random") file <- system.file("extdata",package = "rfishdraw") dat <- readRDS(paste0(file,"/","output_json.rds")) for (i in seq(length(dat))) { dat[[i]] <- cbind(dat[[i]],i) } plot(NA, xlim = c(0,520),ylim = c(-320,0),axes = F,xlab = " ",ylab = " ") for(i in seq(length(dat))) { lines(x = dat[[i]][,1],y = -dat[[i]][,2], lwd=2, col = "blue") } fish_draw() require(ggplot2) p1 <- fish_draw() + theme_void() library(patchwork) p1+p1+p1+p1+p1+p1+plot_layout(ncol = 2) Contributions to this package are welcome. The preferred method of contribution is through a GitHub pull request. Feel also free to contact us by creating an issue.


