30

I have a few seaborn lineplots and I can't figure out how to increase the width of my lines.

Here is my code

#graph 1
sns.lineplot(x="date", y="nps", data=df_nps, ax=ax1, label="NPS", color='#0550D0')
sns.lineplot(x="date", y="ema28", data=df_nps, ax=ax1, label="EMA28", color='#7DF8F3')
sns.lineplot(x="date", y="ema7", data=df_nps, ax=ax1, label="EMA7", color='orange')

#graph 2
dfz_nps_lineplot = sns.lineplot(x="date", y="nps", data=dfz_nps, ax=ax2, label="NPS", color='#0550D0')
dfz_nps_lineplot = sns.lineplot(x="date", y="ema28", data=dfz_nps, ax=ax2, label="EMA28", color='#7DF8F3')
dfz_nps_lineplot = sns.lineplot(x="date", y="ema7", data=dfz_nps, ax=ax2, label="EMA7", color='orange')

#graph3
dfp_nps_lineplot = sns.lineplot(x="date", y="nps", data=dfp_nps, ax=ax3, label="NPS", color='#0550D0')
dfp_nps_lineplot = sns.lineplot(x="date", y="ema28", data=dfp_nps, ax=ax3, label="EMA28", color='#7DF8F3')
dfp_nps_lineplot = sns.lineplot(x="date", y="ema7", data=dfp_nps, ax=ax3, label="EMA7", color='orange')

# formatting

plt.show()

enter image description here

Trenton McKinney
  • 56,955
  • 33
  • 144
  • 158
erb13020
  • 325
  • 1
  • 4
  • 7

3 Answers3

42

As you can see from seaborn.lineplot documentation, the function accepts matplotlib.axes.Axes.plot() arguments, which means you can pass the same arguments you can to matplotlib function in this documentation.

If you want to simply adjust the width of your lineplots I find this the easiest: pass an argument linewidth = your_desired_line_width_in_float , for example, linewidth = 1.5 in your sns.lineplot() functions.

You can find additional possible arguments in the documentations linked.

Example output on random data:

seaborn.lineplot() without linewdith argument provided searbon.lineplot() without linewdith argument

seaborn.lineplot() with linewidth = 3 seaborn.lineplot() with linewidth = 3

dm2
  • 4,053
  • 3
  • 17
  • 28
9

For those of you who are drawing vertical lines and wondering why changing the linewidth parameter seems to have no impact, the answer lies in lineplot's estimator parameter.

For example,

sns.lineplot(
    x=[1,1],
    y=[1,2],
    linewidth=10 # <- This will have NO impact
)

produces

a graph with a thin vertical line

While

sns.lineplot(
    x=[1,1],
    y=[1,2],
    estimator=None,
    linewidth=10 # <- This will now have an impact
)

produces

a graph with a thick vertical line

The documentation states "by default, the plot aggregates over multiple y values at each value of x and shows an estimate of the central tendency and a confidence interval for that estimate". The thin line is an artefact of that aggregation. And by setting estimator to None, "all observations will be drawn."

For more discussion, see the question Vertical line artefacts in 2D lineplot

Matthew Walker
  • 2,527
  • 3
  • 24
  • 30
1

You need to specify the linewidth parameter = desired width

Michele Giglioni
  • 329
  • 4
  • 15