Снятие любой другой галочки на оси X - PullRequest
0 голосов
/ 11 июня 2018

Вот график, который я генерирую в настоящее время со связанным кодом:

enter image description here

values = [2240, 1990, 1460, 1600, 1440, 2240, 100, 5840]
values_count = [0] * 23

#there is a for loop with "if" statements counting up the
# data that lies within 2 bounds - left code out to minimize.

x_axis = np.arange(-250, 5251, 250)
barlist = plt.bar(x_axis, values_count, edgecolor = 'green', align = 'center', width = 290, zorder = 2)
ax = plt.gca()
ax.yaxis.grid(linestyle = '--', linewidth = 1, alpha = 0.2, zorder = -1)
plt.xticks(x_axis , ['', '0', '', '500', '', '1000', '', '1500', '', '2000', '', '2500', 
'', '3000', '', '3500', '', '4000', '', '4500', '', '5000'])
plt.show()

Что должен делать код:

Он считывает список значений, затем определяет, где находятся значения (т. Е. Между 1500 и 2000), затем добавляет единицу к values_count в соответствующем индексе.Затем он строит гистограмму, показывающую количество значений, лежащих между двумя значениями.Код делает это, но проблема заключается в тиках оси X.

Проблема:

Есть тики, которые расположены непосредственно под полосой (то есть ниже0, от 0 до 500, от 500 до 1000 и т. Д. - лучший пример - от 1000 до 2500).Эти тики я хотел бы удалить, оставляя тики между барами (т. Е. Тики с метками 0, 500, 1000 и т. Д.).Для ясности я обвел галочки, которые должны быть удалены:

enter image description here

Что я пробовал:

plt.xticks(x_axis): помечает ось X от -250 до 5250, что обеспечивает перекрытие меток.Добавляя в список (['', 0, '', '500', ..., '', '5000', '']) в качестве второго аргумента, он удаляет все остальные метки, делая ось X графика чистой, как указано выше.

plticker.MultipleLocator(): это не решило мою проблему сотметки убираются, но, скорее, добавляются меньше, когда я ввел значение для этого.

plticker.FixedLocator(): это абсолютно ничего не сделало, даже после того, как с ним связались.

1 Ответ

0 голосов
/ 12 июня 2018

Позвольте мне сначала сказать, что вы определяете диапазон оси x по первому массиву в plt.xticks (т.е. вашей переменной x_axis), который начинается с -250, а затем вы как бы склеиваете различные значения сверхуиз этого (по вашему списку строк), вероятно, для того, чтобы исправить то, что не делает прямо в ваших глазах.Хотя в этом и заключается цель xticks (например, показывать дни недели, пока под капотом все еще действуют как числа от 0 до 6), ваш путь - это неправильное использование: я бы тоже не увидел ясного на вашем месте.
Однако ИМХОВы просто хотите гистограмму, не так ли?

Давайте проверим, что:

plt.figure()
values = [2240, 1990, 1460, 1600, 1440, 2240, 100, 5840]
bins = np.arange(0,6001,500)
plt.hist(values, bins, rwidth=.9)
plt.xticks(bins)

построит график:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...