~/ me art writing

Watercolor (Pen) Plots

Pen plotter artwork has gained a lot of traction these past few years, with many, great, resources published on how to get started. Personally, having been fortunate to WFH during the pandemic, I found pen plotting to be a great distraction from the rest of 2020. In the process, I discovered Licia He’s work, and process writeup using watercolor with her plotter. Immediately inspired, and wanting to try this myself, I dove right in.

I’ll share what I’ve learned so far below. I’m far from an expert, but the resources online for this topic are otherwise scarce, so I hope this will help anyone interested in trying this themselves. But first, let’s look at some results:

Selected pieces

  watercolor flow field
Lines along a Perlin flow fold.

One thing I noticed early in the watercolor exploration was that many attempts looked like a human could have painted them, and (unlike with traditional pen plots) it takes some extra effort to highlight that a machine was involved. Now, I don't want the art to look 100% robotic, but it just seems silly to go through all the work of programming a machine to paint when it could easily be replicated by hand.

This piece was an early breakthrough in combining the aesthetics of watercolor with the precision of a robot, and I really like the result.
Lines walking,
  in 4 colors
One of my favorite results so far, and the only piece I've placed into my shop.

The repetition is almost regular, but small irregularities surface both in the pattern and the way the paint is layed down.

The Gear

You gotta get the gear – Portlandia


It goes without saying that you need some sort of Pen plotter to get started. However, there are a few things to consider:

I’m a big fan of the Axidraw; however, I’ve found I’ve needed to buy a lot of replacement servos as the added vertical pen travel distance wears them out quickly.


The most common question I get asked about my process is the brush that I use, so here are my favorites:

Mangled brushes
Three of my brushes, all with the bristles cut down for more predictable paint patterns.

The brushes are Princeton Select & Princeton Velvetouch flat shaders, in the smallest sizes available.

You’re welcome to buy those brushes, but I think it’s way more fun to go out & experiment on your own. I highly recommend a trip to your local arts & crafts store to find what you like. Here are some of the things I’ve learned:

Messy contour
This is the result of using a regular, unmodified brush.

This was meant to be a contour plot (and it still looks like one), but you can see that many of the contour lines don't close properly, and in some places the lines almost intersect. Maybe you like this aesthetic, but it's not what I'm after with a pen plotter.

Paint Tray

I started with a small, plastic paint tray fastened to my plot surface with some painters tape, but realized that it wasn’t ideal for the following reasons:

Having never 3D printed before, this seemed like the perfect excuse to get started. I wound up sending my prints to 3D Hubs with great success after numerous prototypes at a local print shop.

Here is the end result (you can download these parts from my Thingiverse as well):

Paint tray
The paint tray is held in place on my magnetic plot easel with 4mm diameter & 10mm tall cylindrical magnets. This configuration makes it easy to slot the paint tray into different configurations without moving the plotter carriage.

The lid has a little bit of clearance, but clips onto the paint tray over the magnets quite firmly, and helps keep the paint from drying out.

Note: PLA is not considered to be waterproof. However, PETG is, and might be a better choice of material if you want to print the parts I have linked above.


I’ve been using Windsor & Newton watercolor paint tubes and have loved the results. The only tricky bit is transferring water to/from the paint tray, which I do using some craft syringes.

The Software

Now for the fun part!

Unfortunately, I don’t know of any off-the-shelf solutions that can convert an SVG or similar plot-friendly file into a format that your plotter can watercolor with. So (for now) you’ll have to write your own, or modify your plot files by hand. Depending on your plotter, there are two ways to go about this:

  1. You could embed paths into your plot file that are located under your paint trays. Licia He does this, and has an example uploaded on PlotterFiles.
  2. If you are feeding x,y,z coordinates to your plotter directly (i.e. via the AxiDraw Python API), you can program heuristics to decide when & where to refill paint as the plot is running. This is the approach I chose.

I’ll talk a little about the heuristics and results below.

Paint Refills

Randomized paint
Randomizing both the stroke order, and paint refill distance produced this really lovely texture with strokes of varying opacity.

The first thing you’ll need to do is decide when the plotter needs to grab more paint. The easiest way to do this is to pick a distance that the plotter needs to travel before it returns to the paint tray. You have a couple things to consider here:

Working on getting smooth watercolor lines #axidraw #plottertwitter pic.twitter.com/0ca7CF5iJ7

— Lars Wander (@larswander) May 24, 2021

Layers and Pools

One concept I’ve found really helpful was to approach layering colors in 2 ways.

  1. The first are “layers”, or continuous runs of the plotter with a pause in between. With traditional pen plotting, this is what you’d do to swap out a pen for another in a different color, thickness, etc… This same concept applies here, allowing you to clean your brush, let paint dry, pick some new colors, etc…
  2. The second are “pools”, corresponding to the pools of paint in your paint tray. I annotate each path with a list of pools, e.g. “1,2,3” to fill the brush with before drawing. This allows paints to mix both on the brush, and on the paper.
Labeled pools
I've labeled the 4 pools in my paint tray in this diagram. Having the brush move between the pools, either for a single stroke, or between different strokes allows for the paint to blend & mix.

It can help to keep a dedicated pool of clear water to better control how much the paint mixes. I also recommend randomizing the brushes' movement within each pool keep the pigment properly suspended.

That it’s for now, looking forward to what everyone creates!

Happy plotting!


I’ve since epoxy-coated all of my 3D-printed paint trays. This has had a few benefits:

  1. The epoxy doesn’t seem to stain in the same way the PETG does, so there is less fear of cross-contamination between colors.
  2. They are way easier to clean.
  3. The roughness of the 3D printed surface is gone, reducing the wear on the bristles of my brushes.