Ask HN: What do you use for programmatic drawing?
18 comments
I've used pixijs.com in javascript, especially the drawing bits: https://pixijs.io/examples/#/graphics/simple.js You can export the drawn surface as an image. Not sure how if it will would work from a commandline program though.
I am using Manim for animations.
However, I am also on the lookout for a good programmatic graphics editor. I am thinking of developing my own, but time is an issue.
I have successfully also used Python libraries like this one to create some graphics:
https://pypi.org/project/svgwrite/
However, I am also on the lookout for a good programmatic graphics editor. I am thinking of developing my own, but time is an issue.
I have successfully also used Python libraries like this one to create some graphics:
https://pypi.org/project/svgwrite/
For Python you could use the pyglet OpenGL library to do both 2D and 3D https://github.com/pyglet/pyglet
For Scratch, the pen tool extension works really well. I was just doing a demo on this for an elementary class the other day.
For Scratch, the pen tool extension works really well. I was just doing a demo on this for an elementary class the other day.
After some experimentation I found out that pygame is even better them pyglet.
I had multiple issues with pyglet with high monitor refresh rate, HDR and refresh rate mysteriously slowing down after I dragged the window around. While pygame works flawlessly.
I had multiple issues with pyglet with high monitor refresh rate, HDR and refresh rate mysteriously slowing down after I dragged the window around. While pygame works flawlessly.
Pyglet looks great, but drawing is done in OpenGL way.
Is there a libraray that uses pyglet giving it the drawing interface more limilar to what other 2d APIs offer? Like the one suppoted by HTML Canvas tag?
EDIT:
Never mind. I just noticed pyglet.shapes offers something more palatable than OpenGL. :-)
and doing stuff is pretty clean:
Is there a libraray that uses pyglet giving it the drawing interface more limilar to what other 2d APIs offer? Like the one suppoted by HTML Canvas tag?
EDIT:
Never mind. I just noticed pyglet.shapes offers something more palatable than OpenGL. :-)
and doing stuff is pretty clean:
import pyglet
from pyglet import shapes
batch = pyglet.graphics.Batch()
circle = shapes.Circle(700, 150, 100, color=(50, 225, 30), batch=batch)
square = shapes.Rectangle(200, 200, 200, 200, color=(55, 55, 255), batch=batch)
window = pyglet.window.Window(960, 540)
@window.event
def on_draw():
window.clear()
batch.draw()
@window.event
def on_key_press(symbol, modifiers):
if symbol == pyglet.window.key.ESCAPE:
window.close()
pyglet.app.run()I'm not using it but just in case it is useful to anybody here I would add Processing to the list. Lots of examples can be found at its website:
https://processing.org/examples
https://processing.org/examples
I use Ghostscript (although it doesn't do animations as far as I know, but it works for programmable drawings without animations).
Javascript and canvas. You can just right click and save the image.
https://sequencediagram.org served my needs when I needed to create some timing diagrams for the Corrily docs (e.g. [1]). The cool thing about it is that I could save the source code of the diagram alongside the document itself (as a comment in the markdown).
[1] https://docs.corrily.com/docs/price-optimization-overview
[1] https://docs.corrily.com/docs/price-optimization-overview
Have you tried Pic? It might suit your needs.
http://floppsie.comp.glam.ac.uk/Glamorgan/gaius/web/pic.html
http://floppsie.comp.glam.ac.uk/Glamorgan/gaius/web/pic.html
Personally I'd prefer to have something I can use with programming language that I use. For quick coding I mostly use Python.
I could probably make Python script that generates Pic file and run it through Pic to generate the image but it won't work for any animations and I'd need another piece of software to display the graphic.
I could probably make Python script that generates Pic file and run it through Pic to generate the image but it won't work for any animations and I'd need another piece of software to display the graphic.
Ah. I see.
BTW, may I suggest that you take a look at Nim. Pretty slick for graphics:
https://news.ycombinator.com/item?id=24179060
BTW, may I suggest that you take a look at Nim. Pretty slick for graphics:
https://news.ycombinator.com/item?id=24179060
Gnuplot for graphs.
LaTeX PGF/TikZ for complicated diagrams.
Lines and boxes drawn with ASCII symbols (e.g., +, -, |, <, >, ^, v, /, \, ', `, etc.) using Emacs for very simple diagrams.
PGF/TikZ has considerable learning curve, so it may seem like a hassle in the initial days of learning to use it. But after mastering it once, one can unlock a lot of power and flexibility that comes with it. The PGF/TikZ manual at http://mirrors.ctan.org/graphics/pgf/base/doc/pgfmanual.pdf is really worth seeing. This manual, which is itself designed using PGF/TikZ, is a masterpiece!
LaTeX PGF/TikZ for complicated diagrams.
Lines and boxes drawn with ASCII symbols (e.g., +, -, |, <, >, ^, v, /, \, ', `, etc.) using Emacs for very simple diagrams.
PGF/TikZ has considerable learning curve, so it may seem like a hassle in the initial days of learning to use it. But after mastering it once, one can unlock a lot of power and flexibility that comes with it. The PGF/TikZ manual at http://mirrors.ctan.org/graphics/pgf/base/doc/pgfmanual.pdf is really worth seeing. This manual, which is itself designed using PGF/TikZ, is a masterpiece!
I usually use Manim for creating mathematical animations for some
Mathematical courses I am writing. It’s a python library developed by the guy from 3b1b and it’s a joy to work with it.
I am also using Manim and I second the recommendation.
It works well enough for animations.
There are two versions: 3b1b and the community edition. You will most likely prefer the community edition.
Here is the quickstart tutorial:
https://docs.manim.community/en/stable/tutorials/quickstart....
It works well enough for animations.
There are two versions: 3b1b and the community edition. You will most likely prefer the community edition.
Here is the quickstart tutorial:
https://docs.manim.community/en/stable/tutorials/quickstart....
Graphviz for diagrams, R standard library for plots, and imageMagick for simple image creation or processing.
For charts Python with pyplot is very quick and easy.
But for arbitrary graphics I have no idea. I usually end up just launching Visual Studio, create new WinForms application and placing PictureBox component with empty bitmap or draw directly in OnPaint method of the Form.
But for arbitrary graphics I have no idea. I usually end up just launching Visual Studio, create new WinForms application and placing PictureBox component with empty bitmap or draw directly in OnPaint method of the Form.
P5.js[0] for animating stuff quickly.
[0]: https://p5js.org/
[0]: https://p5js.org/
But what do you personally do, when you need a quick program that needs to draw some arbitrary graphics?
What languages and libraries do you use to draw something quick to see it, save it or animate it without a hassle?