Текст на графике: выровняйте так, чтобы символы совпадали (отформатированная строка из списка чисел) - PullRequest
0 голосов
/ 06 марта 2019

У меня есть график на python, ось x - это дата-время, ось y - это процент от того, что я измеряю.

Мне удалось рассчитать список средних и максимальных чисел для данных за каждые 6 часов на графике. Я пытаюсь нарисовать соответствующий текст, где оба идеально выровнены с каждым списком, где интервал ровный, оба они правильно выровнены и т. Д.

Код для вычисления среднего и максимального и превращения в список:

meantime = df.set_index('datetime').resample('6h').mean()
maxtime = df.set_index('datetime').resample('6h').max()
list_timemean = meantime['l16'].tolist()
list_timemax = maxtime['l16'].tolist()
list_timemeanround = [ round(x, 0) for x in list_timemean ]
list_timemaxround = [ round(x, 0) for x in list_timemax ]
list_timemeanint = list(map(int, list_timemeanround))
list_timemaxint = list(map(int, list_timemaxround))

Код для объединения в строку (моя попытка ее разнести). Я попытался .формат с результатами, которые не работают для меня.

q = "     ".join([str(x) for x in list_timemeanint])
q2 = "     ".join([str(x) for x in list_timemaxint])

Пример: отформатированное усилие

q1 = " ".join(['{:>2}'.format(x) for x in list_timemeanint])

код для построения текста:

ax.text(0.035, 0.97, (q), horizontalalignment='left',
        verticalalignment='baseline', fontsize=9.5, transform=ax.transAxes)
ax.text(0.035, 0.92, (q2), horizontalalignment='left',
        verticalalignment='baseline', fontsize=9.5, transform=ax.transAxes)

Figure

Рисунок для справки. Как вы можете видеть, как только числа начинают различаться от однозначного к двузначному, они начинают неравномерно разделяться. Я хочу, чтобы у них был равномерный интервал в верхней части графика, как этот (из случайного примера, который я обнаружил, что-то похожее:

enter image description here

Я думал о том, чтобы попытаться выяснить, как добавить символ к однозначным числам для равномерного пробела, но это был тупик. Немного позаботился о том, чтобы сделать их меткой x на графике для выравнивания с датой и временем, но это казалось трудным или невозможным.

В идеале я мог бы выравниваться каждые 6 часов, но не так важно быть идеальным с этим шагом. Просто хотите, чтобы они были одинаковыми или фиксированной по всей длине графика.

...