matplotlib/pyplot: печатать только галочки один раз в точечной диаграмме?
Я ищу способ убрать галочки на моем графике разброса пиплотов.
Чтобы создать график рассеяния из столбца набора данных Pandas со строками в качестве элементов, я последовал примеру в [2] - и получил хороший график рассеяния:
входные данные - это 10 тыс. точек данных, где ось X имеет только ~200 уникальных "имен", которые были сопоставлены со скалярами для построения графика. Очевидно, что построение всех тиков по 10 тыс. На оси х немного синхронизировано. Итак, я ищу способ напечатать каждый уникальный тик только один раз, а не для каждой точки данных?
Мой код выглядит так:
fig2 = plt.figure()
WNsUniques, WNs = numpy.unique(taskDataFrame['modificationhost'], return_inverse=True)
scatterWNs = fig2.add_subplot(111)
scatterWNs.scatter(WNs, taskDataFrame['cpuconsumptiontime'])
scatterWNs.set(xticks=range(len(WNsUniques)), xticklabels=WNsUniques)
plt.xticks(rotation='vertical')
plt.savefig("%s_WNs-CPUTime_scatter.%s" % (dfName,"pdf"))
на самом деле, я надеялся, что установки тиковых значений x для уникальных имен должно быть достаточно, но, видимо, нет? Возможно, это что-то простое, но как мне уменьшить тики для моего подзаговора до уникального (не должны ли они быть уникальными, как возвращено numpy.unique?)? Может быть, у кого-то есть идея для меня?
Приветствия и спасибо, Томас
1 ответ
Вы можете использовать set_xticks
метод для достижения этой цели. Обратите внимание, что 200 тиков по осям с метками все еще достаточно много, чтобы заставить их работать на маленьком графике, подобном этому, и это то, что вы уже могли видеть в приведенном выше коде. Без полного кода, чтобы играть, я не могу сказать наверняка.
Кроме того, каков размер WNsUniques
? Это можно легко использовать для проверки вашего звонка unique
делает то, что вы думаете.