Изменить цвет специфика c ytick matplotlib - PullRequest
3 голосов
/ 08 февраля 2020

У меня есть dict с 200 ключами и значениями, которые генерируют этот график. enter image description here

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

with open('path_to_json/values.json', 'r') as outfile:
    a = json.load(outfile)

sum = 0
for k, v in a.items():
    sum += v

avg = sum / len(a.values())

fig, ax = plt.subplots(1,1)
p=ax.plot(list(a.keys()),list(a.values()))
p=ax.plot([0, len(a.values())], [avg, avg], "--")
yt = ax.get_yticks()
yt = np.append(yt, avg)
xticks = np.arange(0, len(a.values()), 10)
ax.yaxis.set_major_formatter(FormatStrFormatter('%.2f'))
ax.set_xticks(xticks)
ax.set_yticks(yt)
plt.show()

1 Ответ

1 голос
/ 08 февраля 2020

Посмотрите на обзор класса Axes, особенно раздел "Тики и метки": есть get_yticklabels и get_yticklines, которые возвращают объекты, которые оба имеют set_color method.

Минимальный пример:

import matplotlib.pyplot as plt
import numpy as np

plt.plot([0, 1], [0, 1])
ax = plt.gca()
ax.set_yticks(np.append(ax.get_yticks(), 0.55))
ax.get_yticklabels()[-1].set_color("red")
ax.get_yticklines()[-2].set_color("red")
plt.show()

Figure 1

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