Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
4.8k views
in Technique[技术] by (71.8m points)

python - Spacing of x-axis label in Seaborn plot

I am trying to plot a moving average plot, data is all fine.

The problem I have is with the x-axis labels, the labels are all overlapping although I have already rotated it to 90 deg.

Increasing the width of the image upon a certain point only increases the leftmost and rightmost column instead of evenly distributing the width of all of the columns.

The labels are not numerical, it is a string consisting of both numbers and characters, for example : 0424NA581G

Is it possible to

  1. plot the x-axis labels by certain intervals? Data points all need to remain but I can afford to let go of the axis labels

I have tried this solution but it turns my labels into 0,5,10,15 etc. and not my original labels

  1. To evenly distribute the column width so that by simply increasing the image size I can resolve this issue.

Thank you !

sns.set_context('talk')

plt.figure(figsize=(50,10))

# Time-series plot
sns.lineplot(x='batch_no',
            y='hardness',
            label='Daily',
            data=df_NA,
            ci=None)

# Rolling average plot
sns.lineplot(x='batch_no',
            y='7_batch_average',
            label='7-batch average',
            data=df_NA,
            ci=None)

plt.xlabel("Date")
plt.ylabel("NA hardness")

plt.xticks(rotation="90")

my plot


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

You can use plt.xticks() for setting that

sns.set_context('talk')
plt.figure(figsize=(50,10))

# Time-series plot
sns.lineplot(x='batch_no', y='hardness', label='Daily', data=data, ci=None)

# Rolling average plot
sns.lineplot(x='batch_no', y='7_batch_average', label='7-batch average', data=data, ci=None)

plt.xlabel("Date")
plt.ylabel("NA hardness")
plt.xticks(rotation="90")

plt.xticks(data['batch_no'][::50])    # set here, ticks at step of 50

plt.show()

Ticks at step 50 enter image description here

Ticks at step 10 enter image description here


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...