Итак, первое, вы можете использовать этого нужно просто функцию fig.autofmt_xdate()
, чтобы иметь дело с XTICK этикеток автоматически - это самый простой способ.
Таким образом, вы будете иметь что-то вроде этого:
import datetime as dt
import matplotlib.dates as mdates
from matplotlib import pyplot
from random import randint
array1 = ['2014-10-28', '2014-11-17', '2014-09-29', '2014-10-17', '2014-10-22']
array2 = [1,4,5,6,9]
dates = ["2014-{month:0>2d}-{day:0>2d}".format(month=m, day=d) for m in [1,5] for d in range(1,32)]
dates = [dt.datetime.strptime(d, '%Y-%m-%d').date() for d in dates]
freqs = [randint(0,4) for _ in dates]
fig = pyplot.figure()
ax = fig.add_subplot(1,1,1)
ax.plot_date(dates, freqs, "ro")
fig.autofmt_xdate()
pyplot.show()
, который до сих пор имеет большой разрыв вы не хотите, но клещ этикетки лучше.
Далее, чтобы иметь дело с разделом, есть несколько вариантов, но они еще не в основном matplotlib (что я знаю). Это сделано на самом деле рисунок двух участков, удаление шипов в середине, и с помощью опции sharey
:
import datetime as dt
import matplotlib.dates as mdates
from matplotlib import pyplot
from random import randint
from matplotlib.ticker import MaxNLocator
dates = ["2014-{month:0>2d}-{day:0>2d}".format(month=m, day=d) for m in [1,5] for d in range(1,10)]
dates = [dt.datetime.strptime(d, '%Y-%m-%d').date() for d in dates]
freqs = [randint(0,4) for _ in dates]
fig = pyplot.figure()
ax1 = fig.add_subplot(1,2,1)
ax2 = fig.add_subplot(1,2,2, sharey=ax1)
ax1.plot_date(dates, freqs, "ro")
ax2.plot_date(dates, freqs, "ro")
#set the upper and lower bounds for the two adjacent plots
ax1.set_xlim(xmax=dt.datetime.strptime("2014-01-11", '%Y-%m-%d').date())
ax2.set_xlim(xmin=dt.datetime.strptime("2014-05-01", '%Y-%m-%d').date())
for ax in [ax1, ax2]:
_ = ax.get_xticklabels() #For some reason, if i don't do this, then it only prints years for the tick labels. :/
ax.xaxis.set_major_locator(mdates.AutoDateLocator(maxticks=6))
#Turn off the spines in the middle
ax1.spines['right'].set_visible(False)
ax2.spines['left'].set_visible(False)
ax1.yaxis.tick_left()
ax2.get_yaxis().set_visible(False)
pyplot.subplots_adjust(wspace=0.1)
fig.autofmt_xdate()
pyplot.show()
Есть еще несколько дополнительных вещей, которые нужно для очистки, но я думаю, вы получите точку.
Или еще лучше, просто пример кусок кода, который работает. Гораздо труднее людям помочь вам, если им нужно заполнить пробелы. – will
... и sendArray есть? – will
Я жестко закодировал пример. Извините, что –