Почти, Jean-Sébastien . Все выглядит идеально, но в прошлом месяце. Это не отображается.
Ваше решение немного изменилось:
fig, ax = plt.subplots()
# Draw high and low temperatures lines:
plt.plot(x, y1, color = '#c83c34')
plt.plot(x, y2, color = '#28659c')
# Fill area between lines:
plt.gca().fill_between(x,
y2, y1,
facecolor='#daecfd',
alpha=0.5)
# Force major ticks on a monthly time scale only:
locator = mpl.dates.MonthLocator()
ax.xaxis.set_major_locator(locator)
# Hide major labels and set axis limits:
ax.set_xticklabels([])
ax.tick_params(axis='both', direction='out')
ax.axis(xmin=datetime.datetime(2014, 1, 1),
xmax=datetime.datetime(2014, 12, 31),
ymin=-50, ymax=50)
labels = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
mticks = ax.get_xticks()
ax.set_xticks((mticks[:-1]+mticks[1:])/2, minor=True)
ax.tick_params(axis='x', which='minor', length=0)
ax.set_xticklabels(labels, minor=True)
plt.show()
Есть ли какие-нибудь подсказки о том, что необходимо включить декабрь в метки по оси x? Во всяком случае, очень.
(Из комментариев:)
Запрос на выборку для хранилища Core Data (на основе SQLite) не может использовать дескрипторы сортировки на основе переходных атрибутов или предикатов на основе Objective-C.
Если вы не хотите потерять преимущества получаемого контролера результатов (например, обновления анимированных табличных представлений, автоматическая группировка по разделам и т. д.), вам необходимо предварительно вычислить расстояние до текущего местоположения и сохранить это в (постоянный) атрибут ваших объектов.
Кроме того, вы можете получить все объекты и отсортировать их в памяти. В этом случае вы можете использовать произвольные дескрипторы сортировки. Но это невозможно комбинировать с выбранным контроллером результатов, поэтому вам нужно будет регистрироваться для изменений в контексте управляемого объекта и при необходимости перезагрузить таблицу.
Я обнаружил проект ggub BSFetchedResultsController github , который является подклассом NSFetchResultsController, который делает то, что Мартин предложил в том, что он сортируется в памяти с использованием произвольного дескриптора сортировки, кроме того, он также регистрирует изменения в контексте и вычисляет любые индекс снова изменяется с учетом произвольного дескриптора сортировки. В целом очень впечатляющий подвиг! Я успешно использовал его для сортировки по расстоянию следующим образом:
BSFetchedResultsController* fetchedResultsController = [[BSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:nil cacheName:nil];
// create a location to compare distance to, e.g. current location
CLLocation* sourceLocation = [[CLLocation alloc] initWithLatitude:55.87595153937809 longitude:-4.2578177698913855];
// compare the distance from both to the source location
fetchedResultsController.postFetchComparator= ^(id a, id b) {
Venue* v1 = (Venue*)a;
Venue* v2 = (Venue*)b;
double d1 = [v1.coreLocation distanceFromLocation:sourceLocation];
double d2 = [v2.coreLocation distanceFromLocation:sourceLocation];
return [@(d1) compare:@(d2)];
};
NSError *error = nil;
if (![fetchedResultsController performFetch:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
}
С момента своего старого проекта у него нет ARC, поэтому, когда вы включаете два файла, помните, чтобы отмечать .m с помощью флагов компилятора - fno-objc-arc в Target, Build Phases. Также имейте в виду, что разработчик считает, что код не готов к производству, поэтому обязательно используйте соответствующее тестирование.
В моем коде выше у меня есть переходное свойство coreLocation на моем подклассе объекта управляемого объекта, вы можете видеть как это сделать здесь . Кроме того, расчет расстояний неэффективен, вам может понадобиться кэшировать расстояние в объекте, а не переучитывать его при каждом сравнении.
Наконец, похоже, что этот проект возник из-за вопроса о создателе Daniel Thorpe's Stackoverflow он остался без ответа, заставив его решить проблему и сам отправил единственный ответ, поэтому я думаю, что если вы найдете полезный его проект, вы можете любезно опубликовать свой пост , как и я.