close

How to plot a dashed line on seaborn lineplot?

Hello Guys, How are you all? Hope You all Are Fine. Today We Are Going To learn about How to plot a dashed line on seaborn lineplot in Python. So Here I am Explain to you all the possible Methods here.

Without wasting your time, Let’s start This Article.

Table of Contents

How to plot a dashed line on seaborn lineplot?

  1. How to plot a dashed line on seaborn lineplot?

    It seems that linestyle= argument doesn't work with lineplot(), and the argument dashes= is a bit more complicated than it might seem.

  2. plot a dashed line on seaborn lineplot

    It seems that linestyle= argument doesn't work with lineplot(), and the argument dashes= is a bit more complicated than it might seem.

Method 1

It seems that linestyle= argument doesn’t work with lineplot(), and the argument dashes= is a bit more complicated than it might seem.

A (relatively) simple way of doing it might be to get a list of the Line2D objects on the plot using ax.lines and then set the linestyle manually:

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt

n = 11
x = np.linspace(0,2,n)
y = np.sin(2*np.pi*x)

ax = sns.lineplot(x,y)

# Might need to loop through the list if there are multiple lines on the plot
ax.lines[0].set_linestyle("--")

plt.show()
enter image description here

Update:

It appears the dashes argument applies only when plotting multiple lines (usually using a pandas dataframe). Dashes are specified the same as in matplotlib, a tuple of (segment, gap) lengths. Therefore, you need to pass a list of tuples.

n = 100
x = np.linspace(0,4,n)
y1 = np.sin(2*np.pi*x)
y2 = np.cos(2*np.pi*x)

df = pd.DataFrame(np.c_[y1, y2]) # modified @Elliots dataframe production

ax = sns.lineplot(data=df, dashes=[(2, 2), (2, 2)])
plt.show()
enter image description here

Method 2

As has been mentioned before, seaborn’s lineplot overrides the linestyle based on the style variable, which according to the docs can be a “name of variables in data or vector data“. Note the second option of directly passing a vector to the style argument. This allows the following simple trick to draw dashed lines even when plotting only single lines, either when providing the data directly or as dataframe:

If we provide a constant style vector, say style=True, it will be broadcast to all data. Now we just need to set dashes to the desired dash tuple (sadly, ‘simple’ dash specifiers such as ‘–‘, ‘:’, or ‘dotted’ are not supported), e.g. dashes=[(2,2)]:

import seaborn as sns
import numpy as np
x = np.linspace(0, np.pi, 111)
y = np.sin(x)
sns.lineplot(x, y, style=True, dashes=[(2,2)])
simple lineplot with dashes

Summery

It’s all About this issue. Hope all Methods helped you a lot. Comment below Your thoughts and your queries. Also, Comment below which Method worked for you? Thank You.

Also, Read