# Picovector primitives limit 16?

**URL:** <https://forums.pimoroni.com/t/picovector-primitives-limit-16/29086>\
**Category:** Support\
**Created:** [September 7, 2026, 5:48pm UTC](https://forums.pimoroni.com/t/picovector-primitives-limit-16/29086 "2026-09-07T17:48:54Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![achrn](https://avatars.discourse-cdn.com/v4/letter/a/db5fbb/32.png) [@achrn](https://forums.pimoroni.com/u/achrn)\
**Post date:** [September 7, 2026, 5:48pm UTC](https://forums.pimoroni.com/t/picovector-primitives-limit-16/29086/1 "2026-09-07T17:48:54Z")

</div>

I think picovector (at least as implemented on Presto in the current presto-v2.0.0-micropython.uf2) has a limit of sixteen primitives per shape.

This came to light because I was trying to draw a bar chart with one bar per hour of a day, and I can only get 16 bars.

minimal demonstration:

```auto
import presto 
from picovector import PicoVector, Polygon

# initialise screen
presto = presto.Presto(ambient_light=False, full_res=True)
display = presto.display
vector = PicoVector(display)

# initialise some colours
wht_pen = display.create_pen(255,255,255) # white
blu_pen = display.create_pen(0,0,200) # blue

# clear the screen
display.set_pen(wht_pen)
display.clear()

# draw graph blocks
shape = Polygon()
for col in range(24):
    shape.rectangle(col*20+1,300,19,40,2)
display.set_pen(blu_pen)
vector.draw(shape)   

presto.update()

```

this only draws the last 16 blocks, and some fine lines (looks like it’s drawn the anti-aliased pixels but not the full solid pixels). If the `range` line is anything no larger than 16 (e.g. `for col in range(15):`) it works perfectly fine, for any value over 16, only the last 16 blocks are drawn.

I’ve found similar with lines - a loop that tries to draw 24 lines (like, the tick marks on the axis of my day graph), I get only the last 16.

Has anyone come across this, is it a general limit?

My workaround is to draw the graph in multiple shapes:

```auto
shape = Polygon()
for col in range(12):
    shape.rectangle(col*20+1,300,19,40,2)
display.set_pen(blu_pen)
vector.draw(shape)   

shape = Polygon()
for col in range(12,24):
    shape.rectangle(col*20+1,300,19,40,2)
display.set_pen(blu_pen)
vector.draw(shape)   

```

(the rest of the script being the same).

(Incidentally, really liking Presto, though I wish it had at least one exposed GPIO - I could put an interface expander on the QW/ST socket but I’d want an interrupt pin. I think GPIO0 is unused to a test pad, and I might use that, but soldering to it is a faff (my hand-eye coordination is not what it was).)

---

<div class="post-metadata">

**Author:** ![bablokb](https://avatars.discourse-cdn.com/v4/letter/b/ee59a6/32.png) [@bablokb](https://forums.pimoroni.com/u/bablokb)\
**Post date:** [September 8, 2026, 6:03am UTC](https://forums.pimoroni.com/t/picovector-primitives-limit-16/29086/2 "2026-09-08T06:03:30Z")

</div>

Yep, looking at the code, the limit of 16 pretty-polys is hardcoded:

```auto
                // TODO: Make these configurable?
                // Tile buffer size, Max nodes per scanline
                pp_init(16);

```

Source: [pimoroni-pico/libraries/pico\_vector/pico\_vector.hpp at b41010d1e9809a62c878e067d7e17ae56f3c4684 · pimoroni/pimoroni-pico · GitHub](https://github.com/pimoroni/pimoroni-pico/blob/b41010d1e9809a62c878e067d7e17ae56f3c4684/libraries/pico_vector/pico_vector.hpp#L52)

My recommendation: open an issue in the repo.
