Home > Software design >  How to regulate number of ticks plot?
How to regulate number of ticks plot?

Time:12-27

I have a dataframe with shape (2000, 2). There are two columns: value and date. I want to plot it with date on x axis. But since there are 2000 days there, I want to keep only 10 ticks on x axis. I tried this:

plt.plot(data["Date"], data["Value"])
plt.locator_params(axis='x', nbins=10)
plt.show()

But plot looks like this:

enter image description here

How to fix it?

CodePudding user response:

From your plot, I'm going to assume your problem is that your "Date" column are strings, and not datetimes (or pandas' Timestamp), so matplotlib considers it as categories. If it was datetime-like, matplotlib would automatically select a somewhat-suitable tick spacing:

date ticks example

You would need to convert those string back to datetimes, for example with dateutil.parser

from dateutil import parser
data['Date_dt'] = data['Date'].apply(parser.parse)

or via strptime (the formatting string in args could change depending on your date format)

from datetime import datetime
data['Date_dt'] = data['Date_str'].apply(datetime.strptime, args=['%Y-%m-%d %H:%M:%S'])

If for some obscure reason, you really just want EXACTLY 10 ticks, you could do something along the lines of:

plt.xticks(pd.date_range(data['Date'].min(), data['Date'].max(), periods=10))
  • Related