Birkaç aydır veri aldım, ancak bazı aylar arasında eksik. Eğer tüm veri setini bir komploda çizersem (bu çok fazla boş alan) oldukça garip görünüyor. Nasıl çalıştığını göstermek için küçük örnek komut dosyasını yazdım (temel: Python/Matplotlib - Is there a way to make a discontinuous axis?)X-ekseni üzerindeki tarihlerle süreksiz zamanlamalar grafiği
Sorun: x-eksenini aynı tarih biçimlendirmesini kullanamıyorum! Ya balta ya da balta2 doğrudur, ama her ikisi de değildir. Herhangi bir fikrin var mı?
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import datetime
def getDates(startdate, enddate):
days = (enddate + datetime.timedelta(days=1) - startdate).days
dates = [ startdate + datetime.timedelta(days=x) for x in range(0,days) ]
return dates
dates1 = getDates(datetime.datetime(2013,1,1), datetime.datetime(2013,1,31))
dates2 = getDates(datetime.datetime(2013,3,1), datetime.datetime(2013,3,31))
dates = dates1+dates2
data = np.arange(len(dates))
Locator = mpl.dates.DayLocator(interval=5)
Formatter = mpl.dates.DateFormatter('%d-%m-%y')
fig,(ax,ax2) = plt.subplots(1,2,sharey=True)
fig.subplots_adjust(wspace=0.05)
fig.set_size_inches(10,3)
ax.plot(dates, data)
ax2.plot(dates, data)
ax.legend(loc=1)
ax.set_ylim(0, 61)
ax.set_xlim(datetime.datetime(2013,1,1), datetime.datetime(2013,1,31))
ax2.set_xlim(datetime.datetime(2013,3,1), datetime.datetime(2013,3,31))
labels = ax.get_xticklabels()
for label in labels: label.set_rotation(30)
labels = ax2.get_xticklabels()
for label in labels: label.set_rotation(30)
ax.spines['right'].set_visible(False)
ax2.spines['left'].set_visible(False)
ax.tick_params(right='off')
ax2.tick_params(left='off')
ax2.yaxis.tick_right()
ax.xaxis.set_major_locator(Locator)
ax.xaxis.set_major_formatter(Formatter)
ax2.xaxis.set_major_locator(Locator)
ax2.xaxis.set_major_formatter(Formatter)
plt.savefig("test.png", bbox_inches='tight')
Sonuç:
bir satıra döngüler for' 'daraltmak etmeyin, kötü tarzıdır ve – tacaswell