更改Matplotlib特定ytick的颜色

3

我有一个包含200个键和值的dict,生成了这张图。enter image description here

我计算这些值的平均值并绘制出来。我希望平均值的颜色与线条相同。我使用的代码如下:

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()

我同意@finefoot的观点。设置“xticks”的答案在这里:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.xticks.html。我建议删除问题中的那部分内容。 - SKPS
1个回答

2
请查看Axes类的概述,特别是“刻度和刻度标签”部分:有get_yticklabelsget_yticklines两个方法,它们返回对象,这些对象都有一个set_color方法。
最简示例:
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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接