Issue
I have two corresponding lists, one of the dates and another of its respective price. The lists are 30,000 data points long.
x = [datetime.date(1997, 8, 8), datetime.date(2021, 8, 17), datetime.date(2019, 8, 7), ... ]
y = [0.49, 1.99, 0.0, ...]
I'm using this code to generate the graph below:
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y/%m/%d'))
plt.gca().xaxis.set_major_locator(mdates.DayLocator(interval=5))
plt.scatter(x,y)
plt.gcf().autofmt_xdate()
plt.show()
I'm supposed to have the dates separated in a readable format using the code above but it doesn't seem to work. I'm also not sure if it's possible to make the graph more readable or if that's the nature of a scatter with so many data points (not sure what else to use).
The dates range from 1997 to 2022 and the prices from 0.0 (free) to 300.
Also, I'm getting this error that constantly pops up even while the graph is showing and I have no idea what it's doing:
Locator attempting to generate 1995 ticks ([9591.0, ..., 19561.0]), which exceeds Locator.MAXTICKS (1000).
Solution
If you want your graph to be more readable, you need to increase the interval of DayLocator
object to at least 6000. Also, you can change the size of the scatter points with the s
parameter at the scatter
function:
import matplotlib.pyplot as plt
import pandas as pd
from datetime import datetime
import matplotlib.dates as mdates
x = pd.date_range(datetime.today(), periods=30000).tolist()
y = list(range(30000))
plt.gca().xaxis.set_major_locator(mdates.DayLocator(interval=6000))
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%d-%m-%Y'))
plt.gcf().autofmt_xdate()
plt.scatter(x, y, s=0.1)
Output:
Answered By - Cardstdani
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.