GithubHelp home page GithubHelp logo

basjacobs93 / fawkes Goto Github PK

View Code? Open in Web Editor NEW

This project forked from thomasp85/fawkes

0.0 1.0 0.0 1.6 MB

An R Interface to the AxiDraw plotter

Home Page: https://fawkes.data-imaginist.com

License: Other

R 92.64% C 7.36%

fawkes's Introduction

fawkes

R build status Lifecycle: maturing

This package provides an R API to control the AxiDraw pen plotter. Under the hood it interfaces with the AxiDraw Python API and provides more or less the same possibilities. More interesting, though, is that it also provides integration with the standard R plotting system through a graphic device (axi_dev()) that translates plotting instructions from e.g.  base and grid graphics to plotter movement.

Installation

fawkes is pretty niche by its very nature and it is unlikely that it will be submitted to CRAN. This should not be conflated with it not being ready for use. The current version can be installed directly from github using devtools:

# install.packages('devtools')
devtools::install_github('thomasp85/fawkes')

Examples

It is difficult to showcase the use of a piece of software meant to communicate with a pen plotter virtually. axi_svg() provides access to the svg plotting capabilities build into the python API, and axi_manual() wraps the interactive mode. More interesting from R is the axi_dev() that opens up a graphic device that sends instructions to the plotter. The device comes with a lot of batteries included and will e.g. ensure stroking of the requested width by drawing multiple offsetted lines, draw fill with hatching, ask for pen change when the colour changes, and optimise the travel path to improve plotting speed. All of this is impossible to show directly, but fawkes also provides ghost_dev() that uses the exact same routines as axi_dev() but collects the instructions and lets you preview them.

library(fawkes)
library(ggplot2)

p <- ggplot(mtcars) + 
  geom_point(aes(disp, mpg)) + 
  facet_wrap(~ gear) + 
  theme_bw(base_size = 6) + 
  theme(
    plot.background = element_blank(),
    panel.background = element_blank()
  )

gd <- ghost_dev('A6', portrait = FALSE, margins = 5, ignore_color = TRUE)
p
invisible(dev.off())

gd$preview()

It is also possible to see the movement when the pen is raised

gd$preview(plot_air = TRUE)

This makes it easy to quickly assess the efficacy of the automatic path optimisation:

gd <- ghost_dev('A6', portrait = FALSE, margins = 5, ignore_color = TRUE,
                optimize_order = 'none')
p
invisible(dev.off())

gd$preview(plot_air = TRUE)

Limitations

As can be seen from the plots above, there is currently no text support in fawkes. This shortcoming is likely to change as I improve the text and font support in R in general. Further, there is no way to plot raster images, a limitation that is pretty much guarantied with a pen plotter.

Code of Conduct

Please note that the ‘fawkes’ project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.

fawkes's People

Contributors

thomasp85 avatar basjacobs93 avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.