How to draw more type of lines in matplotlib

Here's another example which you can use to try out different custom line styles (defined as elements in the list 'dashList'), and adapt if you want to use multiple different custom line styles in your plots:

import matplotlib.pyplot as plt

dashList = [(5,2),(2,5),(4,10),(3,3,2,2),(5,2,20,2)] 
# List of Dash styles, each as integers in the format: (first line length, first space length, second line length, second space length...)

# set up the axes to look nice:
frame1 = plt.gca() 
frame1.axes.xaxis.set_ticklabels([]) # hide x axis numbers
plt.xlim(0,6) # set x and y axis extents
plt.ylim(-0.5,len(dashList)-0.5)
plt.ylabel("dashList element") # add a label to the y axis

for n in range(0,len(dashList)):
    plt.plot([0.5,4],[n,n], color = 'black', linestyle='--', dashes=dashList[n]) # plot a horizontal line using each custom line style
    # NB plot.plt draws a line between the following points: ([x0,x1],[y0,y1])
    plt.text(4.5,n,dashList[n]) # ...and show the numbers used to generate each custom linestyle
plt.show()

enter image description here


You can create far more than these four types using the dashes argument to specify custom dash styles. For example:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 10)
y = np.sin(x)
plt.plot(x, y, dashes=[10, 5, 20, 5], linewidth=2, color='black')

enter image description here

The dashes argument is a list of integers which specify the size of dashes and spaces in points: in the example above there is a 10-point dash, a 5-point space, a 20-point dash, and another 5-point space, and then the sequence repeats.