2016-05-19 2 views
0

Я пытаюсь получить мои ярлыки правильно. Я хочу, чтобы он показывал 10 значений в списке, но я понятия не имею, как это сделать. Обычный способ показать это не работает, и когда есть много значений, его трудно прочитать, посмотрите изображение. enter image description hereЯрлыки Python равномерно распределены

Здесь вы видите, что невозможно прочитать данные. У вас есть идея заставить его работать правильно?

Я пробовал autoDateLocator, но это не сработало. Значения оси были неправильными. Я также пытался сделать это вручную, но тот же результат произошел.

Заранее благодарен!

+0

Вы говорите, что хотите видеть только 10 тиков? (метки по оси x) – armatita

+0

да, я хочу видеть только 10 тиков, чтобы сохранить удобство для отображения последовательности. Проверка того, что произошло за рождество и другие праздники, в то же время сохраняя информацию. Он автоматически выбирал тики, когда я не хотел отображать день недели, но поскольку некоторые данные сильно варьируются в зависимости от дня недели, я хотел бы сохранить это – Tunder250

ответ

0

У меня есть «решена эта проблема». Я спросил, и на самом деле не нашел ответа, который отвечал моим потребностям, поскольку каждый тик всегда проявляется. Однако, когда я сохраняю xtick_labels в формате datetime, он сортируется самим matplotlib, если слишком много значений для отображения. Это в соответствии с набором данных Armamatita при условии

import matplotlib.pyplot as plt 
import datetime 

import numpy as np 

x = np.array([datetime.datetime(i,1,1) for i in range(1700,2017)]) 
y = np.random.randint(0,100,len(x)) 
fig, ax = plt.subplots() 
ax.plot(x,y) 

plt.show() 

Я когда дни я хочу видеть больше, чем 14, я просто позволил Matplotlib выбрать të xtick_labels. При равном или менее 14, я добавляю его сам с помощью:

alldays = DayLocator() weekFormatter = DateFormatter('%a %b %d %Y')

и это право перед возвращением фигу:

ax.xaxis.set_major_locator(alldays) ax.xaxis.set_major_formatter(weekFormatter)

Это не самый аккуратный вещий код, но он делает трюк.