matplotlib/pyplot: печатать только галочки один раз в точечной диаграмме?

Я ищу способ убрать галочки на моем графике разброса пиплотов.

Чтобы создать график рассеяния из столбца набора данных Pandas со строками в качестве элементов, я последовал примеру в [2] - и получил хороший график рассеяния:

диаграмма разброса пиплотов с 10 тыс. тиков ~200 уникальных имен

входные данные - это 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 делает то, что вы думаете.

Другие вопросы по тегам