Tell me which library is better to use? I want to create a png image with a flowchart in python. Something like an intelligence map, where there will be text, rectangles and lines connecting them.
I googled and found the pypng module. Is it suitable for this purpose? Or are there better and more universal solutions? How do I create the png images I need using python
First of all, the description of your needs and your researches to try to find out how you can get it should be in the question. Just to help the community to answer you :)
There are some possible conclusions of your question.
.png
If you are thinking to create a chart with some library, one of the best way to do it is using matplotlib
, this time i show a use with the module pyplot
. You can create a plot, and then save it as .png
from matplotlib import pyplot as plt
fig, ax = plt.subplots( nrows=1, ncols=1 ) # create figure & 1 axis
ax.plot([0,1,2], [10,20,3])
fig.savefig('flowchart.png') # Save your plot as an image and use .png
plt.close(fig) #Close the figure window
There are some good libraries to do this.
As you told pypng
is one of them, you can check some code examples where they work on https://pypng.readthedocs.io/en/latest/ex.html
But i have been researching about pygame
, you can draw figures, use text, colours, so both options are interesting https://www.pygame.org/wiki/about.
i´ll repost interesting code related:
''' pg_draw_circle_save101.py
draw a blue solid circle on a white background
save the drawing to an image file
for result see http://prntscr.com/156wxi
tested with Python 2.7 and PyGame 1.9.2 by vegaseat 16may2013
'''
import pygame as pg
# pygame uses (r, g, b) color tuples
white = (255, 255, 255)
blue = (0, 0, 255)
width = 300
height = 300
# create the display window
win = pg.display.set_mode((width, height))
# optional title bar caption
pg.display.set_caption("Pygame draw circle and save")
# default background is black, so make it white
win.fill(white)
# draw a blue circle
# center coordinates (x, y)
center = (width//2, height//2)
radius = min(center)
# width of 0 (default) fills the circle
# otherwise it is thickness of outline
width = 0
# draw.circle(Surface, color, pos, radius, width)
pg.draw.circle(win, blue, center, radius, width)
# now save the drawing
# can save as .bmp .tga .png or .jpg
fname = "circle_blue.png"
pg.image.save(win, fname)
print("file {} has been saved".format(fname))
# update the display window to show the drawing
pg.display.flip()
# event loop and exit conditions
# (press escape key or click window title bar x to exit)
while True:
for event in pg.event.get():
if event.type == pg.QUIT:
# most reliable exit on x click
pg.quit()
raise SystemExit
elif event.type == pg.KEYDOWN:
# optional exit with escape key
if event.key == pg.K_ESCAPE:
pg.quit()
raise SystemExit