Самый простой способ,
t = ax.set_title("red")
t.set_color("r")
Полный пример,
import numpy as np
import matplotlib
matplotlib.use("WXAgg")
import matplotlib.pyplot as plt
plt.rc('text', usetex=True)
N = 50
x = np.random.rand(N)
y = np.random.rand(N)
fig, ax = plt.subplots()
ax.scatter(x, np.cos(x), color = 'blue', marker = "+", s=47.5)
t = ax.set_title(r"X $X$")
t.set_color("r")
plt.show()
ОБНОВЛЕНИЕ:
Эту идею с текстом можно использовать, чтобы получить разные цвета вотдельное слово, хотя и не идеальное решение, так как вы должны выстраивать различные буквы в ряд,
t1 = fig.text(0.5,0.9,"$X$", transform=ax.transAxes)
t1.set_color("r")
t2 = fig.text(0.515,0.9,"$X$", transform=ax.transAxes)
t2.set_color("b")
Вы можете сделать это функцией, как в этом примере , адаптированном для названия,
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.offsetbox import AnchoredOffsetbox, TextArea, HPacker
def multicolor_label(ax, list_of_strings, list_of_colors, anchorpad=0, **kw):
boxes = [TextArea(text, textprops=dict(color=color, ha='left',va='bottom',**kw))
for text,color in zip(list_of_strings,list_of_colors) ]
xbox = HPacker(children=boxes,align="center",pad=0, sep=5)
anchored_xbox = AnchoredOffsetbox(loc=3, child=xbox, pad=anchorpad, frameon=False,
bbox_to_anchor=(0.5, 1.0),
bbox_transform=ax.transAxes, borderpad=0.)
ax.add_artist(anchored_xbox)
plt.rc('text', usetex=True)
N = 50
x = np.random.rand(N)
y = np.random.rand(N)
fig, ax = plt.subplots()
ax.scatter(x, np.cos(x), color = 'blue', marker = "+", s=47.5)
multicolor_label(ax, ["$X$", "$X$"], ["r", "b"])
plt.show()