22

By default the seaborn displaces the X axis ranges from -5 to 35 in distplots. But I need to display the distplots with the X axis ranges from 1 to 30 with 1 unit. How can I do that?

Trenton McKinney
  • 56,955
  • 33
  • 144
  • 158

2 Answers2

31

For the most flexible control with these kind of plots, create your own axes object then add the seaborn plots to it. Then you can perform the standard matplotlib changes to features like the x-axis, or use any of the normal controls available through the matplotlib API.

Tested in python 3.8.12, matplotlib 3.4.3, seaborn 0.11.2

import matplotlib.pyplot as plt
import seaborn as sns

data = [5,8,12,18,19,19.9,20.1,21,24,28] 

fig, ax = plt.subplots()
sns.histplot(data, ax=ax)  # distplot is deprecate and replaced by histplot
ax.set_xlim(1,31)
ax.set_xticks(range(1,32))
plt.show()

With the ax and fig object exposed, you can edit the charts to your heart's content now, and easily do stuff like changing the size with fig.set_size_inches(10,8))!

enter image description here

Trenton McKinney
  • 56,955
  • 33
  • 144
  • 158
fordy
  • 2,520
  • 1
  • 14
  • 22
10

I do not know if this is what you are looking for but I believe so:

import matplotlib.pyplot as plt
import seaborn as sns
tips = sns.load_dataset("tips")
sns.set_style("whitegrid")
g = sns.lmplot(x="tip", y="total_bill", data=tips,
 aspect=2)
g = (g.set_axis_labels("Tip","Total bill(USD)").
set(xlim=(0,15),ylim=(0,100)))
plt.title("title")
plt.show(g)

As you can see, the key part is the xlim=(0,15) where you specify the range you want to have. In your case:

xlim=(1,30)

I took it from here.

luis.galdo
  • 543
  • 5
  • 20