If you have two numeric variable datasets and worry about what relationship between them. Then Python seaborn line plot function will help to find it. Seaborn library provides sns.lineplot() function to draw a line graph of two numeric variables like x and y.
Lest jump on practical.
Import Libraries
import seaborn as sns # for data visualization
import pandas as pd # for data analysis
import matplotlib.pyplot as plt # for data visualization
Python Seaborn line plot Function
Seaborn provide sns.lineplot() function to draw beautiful single and multiple line plots using its parameters.
Syntax: sns.lineplot(
                    x=None,
                    y=None,
                    hue=None,
                    size=None,
                    style=None,
                    data=None,
                    palette=None,
                    hue_order=None,
                    hue_norm=None,
                    sizes=None,
                    size_order=None,
                    size_norm=None,
                    dashes=True,
                    markers=None,
                    style_order=None,
                    units=None,
                    estimator=’mean’,
                    ci=95,
                    n_boot=1000,
                    sort=True,
                    err_style=’band’,
                    err_kws=None,
                    legend=’brief’,
                    ax=None,
                    **kwargs,
                    )
In python matplotlib tutorial, we learn how to draw line plot using matplotlib plt.plot() function. So, we use the same dataset which was used in the matplotlib line plot blog.
days = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
temperature = [36.6, 37, 37.7,39,40.1,43,43.4,45,45.6,40.1,44,45,46.8,47,47.8]
#create dataframe using two list days and temperature
temp_df = pd.DataFrame({"days":days, "temperature":temperature})
# Draw line plot
sns.lineplot(x = "days", y = "temperature", data=temp_df,)
plt.show() # to show graph
Output >>>
Load DataFrame from GitHub Seaborn Repository
Above temp_df dataset is insufficient to explain with sns.lineplot() function’s all parameters for that we are using another dataset. which load from GitHub seaborn Dataset repository. This repository contains lots of DataFrame ready to do operation using seaborn for visualization.
#load tips dataset from GitHub
tips_df = sns.load_dataset("tips")
print(tips_df) # call tips DataFrame
Output >>>
The shape of tips DataFrame:
print(tips_df.shape) # get shape of dataseat tips
Output >>> (244, 7)
Draw line plot of total_bill and tip
# Draw line plot of total_bill and tip
sns.lineplot(x = "total_bill", y = "tip", data = tips_df)
Output >>>
Draw line plot of tip and total_bill
# Draw line plot of tip and total_bill
sns.lineplot(x = "tip", y = "total_bill", data = tips_df)
Output >>>
Draw line plot of tip and size
# Draw line plot of tip and size
sns.lineplot(x = "tip", y = "size", data = tips_df)
Output >>>
Draw line plot of size and total_bill
# Draw line plot of size and total_bill
sns.lineplot(x = "size", y = "total_bill", data = tips_df)
Output >>>
Seaborn Line Plot with Multiple Parameters
Till now, drawn multiple line plot using x, y and data parameters. Now, we are using multiple parameres and see the amazing output.
hue => Get separate line plots for the third categorical variable. In the above graph draw relationship between size (x-axis) and total-bill (y-axis). Now, plotting separate line plots for Female and Male category of variable sex.
style => Give style to line plot, like dashes. Different for each line plot.
palette => Give colormap for graph. You can choose anyone from bellow which is separated by a comma.
Colormap
Accent, Accent_r, Blues, Blues_r, BrBG, BrBG_r, BuGn, BuGn_r, BuPu, BuPu_r, CMRmap, CMRmap_r, Dark2, Dark2_r, GnBu, GnBu_r, Greens, Greens_r, Greys, Greys_r, OrRd, OrRd_r, Oranges, Oranges_r, PRGn, PRGn_r, Paired, Paired_r, Pastel1, Pastel1_r, Pastel2, Pastel2_r, PiYG, PiYG_r, PuBu, PuBuGn, PuBuGn_r, PuBu_r, PuOr, PuOr_r, PuRd, PuRd_r, Purples, Purples_r, RdBu,
RdBu_r, RdGy, RdGy_r, RdPu, RdPu_r, RdYlBu, RdYlBu_r, RdYlGn, RdYlGn_r, Reds, Reds_r, Set1, Set1_r, Set2, Set2_r, Set3, Set3_r, Spectral, Spectral_r, Wistia, Wistia_r, YlGn, YlGnBu, YlGnBu_r, YlGn_r, YlOrBr, YlOrBr_r, YlOrRd, YlOrRd_r, afmhot, afmhot_r, autumn, autumn_r, binary,
binary_r, bone, bone_r, brg, brg_r, bwr, bwr_r, cividis, cividis_r, cool, cool_r, coolwarm, coolwarm_r, copper, copper_r, cubehelix, cubehelix_r, flag, flag_r, gist_earth, gist_earth_r, gist_gray, gist_gray_r, gist_heat, gist_heat_r, gist_ncar, gist_ncar_r, gist_rainbow, gist_rainbow_r,
gist_stern, gist_stern_r, gist_yarg, gist_yarg_r, gnuplot, gnuplot2, gnuplot2_r, gnuplot_r, gray, gray_r, hot, hot_r, hsv, hsv_r, icefire, icefire_r, inferno, inferno_r, jet, jet_r, magma, magma_r, mako, mako_r,
nipy_spectral, nipy_spectral_r, ocean, ocean_r, pink, pink_r, plasma, plasma_r, prism, prism_r, rainbow, rainbow_r, rocket, rocket_r, seismic, seismic_r, spring, spring_r, summer, summer_r, tab10, tab10_r, tab20,
tab20_r, tab20b, tab20b_r, tab20c, tab20c_r, terrain, terrain_r, twilight, twilight_r, twilight_shifted, twilight_shifted_r, viridis, viridis_r, vlag, vlag_r, winter, winter_r
dashes => If line plot with dashes then use “False” value for no dashes otherwise “True“.
markers => Give the markers for point like (x1,y1). for markers follow matplotlib line plot blog.
legend => Give legend. The default value is “brief” but you can give “full” or “False“. False for no legend.
# Draw line plot of size and total_bill with parameters
sns.lineplot(x = "size", y = "total_bill", data = tips_df, hue = "sex",
style = "sex", palette = "hot", dashes = False,
markers = ["o", "<"], legend="brief",)
plt.title("Line Plot", fontsize = 20) # for title
plt.xlabel("Size", fontsize = 15) # label for x-axis
plt.ylabel("Total Bill", fontsize = 15) # label for y-axis
plt.show()
Note:
- We use only important parameters but you can use multiple depends on requirements.
- Seaborn line plot function support xlabel and ylabel but here we used separate functions to change its font size
Output >>>
Seaborn set style and figure size
Above, the line plot shows small and its background white but you cand change it using plt.figure() and sns.set() function.
plt.figure(figsize = (16,9)) # figure size with ratio 16:9
sns.set(style='darkgrid',) # background darkgrid style of graph
# Draw line plot of size and total_bill with parameters
sns.lineplot(x = "size", y = "total_bill", data = tips_df, hue = "sex",
style = "sex", palette = "hot", dashes = False,
markers = ["o", "<"], legend="brief",)
plt.title("Line Plot", fontsize = 20)
plt.xlabel("Size", fontsize = 15)
plt.ylabel("Total Bill", fontsize = 15)
plt.show()
Output >>>
Seaborn multiple line plots
Using sns.lineplot() hue parameter, we can draw multiple line plot. In the above graphs drawn two line plots in a single graph (Female and Male) same way here use day categorical variable. Which have total 4-day categories?
plt.figure(figsize = (16,9))
sns.set(style='darkgrid',)
# Draw line plot of size and total_bill with parameters and hue "day"
sns.lineplot(x = "size", y = "total_bill", data = tips_df, hue = "day",
style = "day", palette = "hot", dashes = False,
markers = ["o", "<", ">", "^"], legend="brief",)
plt.title("Line Plot", fontsize = 20)
plt.xlabel("Size", fontsize = 15)
plt.ylabel("Total Bill", fontsize = 15)
plt.show()
Output >>>
Conclusion
In the seaborn line plot blog, we learn how to plot one and multiple line plots with a real-time example using sns.lineplot() method. Along with that used different method with different parameter. We Suggest you make your hand dirty with each and every parameter of the above methods. This is the best coding practice. Still, you didn’t complete the matplotlib tutorial jump on it.
Download practical code snippet in Jupyter Notebook file format