Can I provide the border (contour) of the line in the matplotlib chart function?

I'm trying to:

points = [...] axe.plot([i[0] for i in points], [i[1] for i in points], linestyle='-', linewidth=10, color='black', markeredgewidth=2, markeredgecolor='green') 

But I just get a black outline. How can I achieve something like the following picture? black line with green border

+4
source share
3 answers

Just draw a line twice with different thicknesses:

 axe.plot([i[0] for i in points], [i[1] for i in points], linestyle='-', linewidth=10, color='green') axe.plot([i[0] for i in points], [i[1] for i in points], linestyle='-', linewidth=5, color='black') 
+3
source

If you built the line twice, it will not be displayed in the legend. It really is better to use patheffects. Here are two simple examples:

 import matplotlib.pyplot as plt import numpy as np import matplotlib.patheffects as pe # setup data x = np.arange(0.0, 1.0, 0.01) y = np.sin(2*2*np.pi*t) # create line plot including an outline (stroke) using path_effects plt.plot(x, y, color='k', lw=2, path_effects=[pe.Stroke(linewidth=5, foreground='g'), pe.Normal()]) # custom plot settings plt.grid(True) plt.ylim((-2, 2)) plt.legend(['sine']) plt.show() 

enter image description here

Or if you want to add a line shadow

 # create line plot including an simple line shadow using path_effects plt.plot(x, y, color='k', lw=2, path_effects=[pe.SimpleLineShadow(shadow_color='g'), pe.Normal()]) # custom plot settings plt.grid(True) plt.ylim((-2, 2)) plt.legend(['sine']) plt.show() 

enter image description here

+13
source

A more general answer is to use patheffects. Light outlines and shadows (and other things) for any artist rendered by way.
Matplotlib documents (and examples) are quite accessible.

http://matplotlib.org/users/patheffects_guide.html

http://matplotlib.org/examples/pylab_examples/patheffect_demo.html

+4
source

Source: https://habr.com/ru/post/1437823/


All Articles