I have the following data sample as x,y pairs and both x and y are Unix time-stamps:
1354648326,1354648326
1354649456,1371775551
1354649664,1429649819
135464
Limits of your x-axis data is only from 2012-12-05 06:12:06
to 2012-12-05 08:22:19
. You have to expand date range.
However you may use this code to set x-axis ticks every 3 month:
import matplotlib.pyplot as plt
from itertools import izip
import datetime
import numpy as np
import pandas as pd
def grouped(iterable, n):
return izip(*[iter(iterable)]*n)
def getLabels(s,t):
labels =[]
for x in pd.date_range(start=s, end=t, freq='3M'):
labels.append(x.strftime("%Y-%m-%d"))
print labels
return labels
arr = [1354648326,1354648326,
1354649456,1371775551,
...
1354655889,1426675579,
1354656139,1420486774]
# convert timestamps to datetime objects
X = list()
Y = list()
for x, y in grouped(arr, 2):
X.append(datetime.datetime.fromtimestamp(x))
Y.append(datetime.datetime.fromtimestamp(y))
# range of X list is only one day: 2012-12-05
# you have to enlarge data of X
print np.min(X),np.max(X)
# sample data
data = np.random.uniform(-10, 10, size=len(X)*len(Y))
# plot
plt.scatter(X, Y, s = data)
ax = plt.gca()
# set limits for X-axis
ax.set_xlim([np.min(X),np.max(X)])
# generate labels
xlabels = getLabels(np.min(X),np.max(X))
# set ticks and labels
ax.set_xticks(xlabels)
ax.set_xticklabels(xlabels,rotation=20)
plt.show()
If I expand x-axis limits I get something like this on your data:
...
# plot
plt.scatter(X, Y, s = data)
ax = plt.gca()
# set limits for X-axis
xmin = datetime.datetime(2012,1,1,0,0,0) # np.min(X)
xmax = xmin + datetime.timedelta(days = 360) # np.max(X)
ax.set_xlim([xmin, xmax])
# generate labels every 3 month
xlabels = getLabels(xmin, xmax)
# set ticks and labels
ax.set_xticks(xlabels)
ax.set_xticklabels(xlabels,rotation=20)
plt.show()
If you want more complicated datetime tick labels read this answer.