Reputation: 123
It's all in the title. I'm trying to plot a grid in python, with a specific color for each edge. Here is a view of what I would like to obtain, made from tikz.
The tikz code gives me a roadmap for how to proceed in python: I just run two loops of coordinates and draw by hand the edge (x, y)--(x+1,y).
I see two ways of implementing this in python, but can't find the exact syntax/objects/packages to use (most of the time, people just call the grid functions, in which the axis can be given a color, but this is quite different):
Thanks !
Upvotes: 2
Views: 314
Reputation: 1283
matplotlib.path
can be used to draw polygons or also just a polyline following a specific path.
See also the matplotlib Path Tutorial.
Brief example with line segments in different colors:
Code:
import matplotlib.pyplot as plt
import matplotlib.path as mpath
def draw_polyline(start_x, start_y, delta_x, delta_y, color):
Path = mpath.Path
path_data = [
(Path.MOVETO, (start_x, start_y)),
(Path.MOVETO, (start_x + delta_x, start_y + delta_y)),
]
codes, verts = zip(*path_data)
path = mpath.Path(verts, codes)
x, y = zip(*path.vertices)
line, = ax.plot(x, y, f'{color}-', lw=3)
fig, ax = plt.subplots(1,1, figsize = (5,5))
draw_polyline(0.1, 0.1, 0.0, 0.1, 'k')
draw_polyline(0.1, 0.2, 0.1, 0.0, 'g')
draw_polyline(0.2, 0.2, 0.0, 0.1, 'r')
draw_polyline(0.2, 0.3, -0.1, 0.0, 'y')
plt.show()
Notes:
MOVETO
sets the starting point, an explicit endpoint isn't required.lw
is linewidthdraw_polyline
function and it's calls may need to be adapted to your data (seems like a lot of lines and maybe the coloring follows a specific function...), but the code should show the principle of using path
for thisConcerning using the grid I'd doubt that the 'segments' can be separated (but maybe others know a way).
Matplotlib: Change color of individual grid lines shows a way to color individual grid lines, but 'only' the whole line at once and not in segments.
Upvotes: 1