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?
Asked
Active
Viewed 1.3e+01k times
2 Answers
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))
!

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