Python 拆分每个级别具有不同格式的matplotlib标题

Python 拆分每个级别具有不同格式的matplotlib标题,python,matplotlib,data-visualization,Python,Matplotlib,Data Visualization,我试图制作一个matplotlib绘图,它有四个标题级别,每个级别都有不同的格式规范 我读了这篇类似的文章,它有助于添加多层次标题。然而,我仍然不确定如何使他们每个不同的颜色,例如。有什么简单的方法可以做到这一点吗 ax.set_title('Normalized occupied \n Neighbors') \n添加级别,但不能使“标准化占用”为黑色,而使“Neigbors”为蓝色。我能够基于创建解决方案。如您所见,该解决方案不是通用的,但适用于您的特定示例 这里唯一的问题是x_pos=[

我试图制作一个matplotlib绘图,它有四个标题级别,每个级别都有不同的格式规范

我读了这篇类似的文章,它有助于添加多层次标题。然而,我仍然不确定如何使他们每个不同的颜色,例如。有什么简单的方法可以做到这一点吗

ax.set_title('Normalized occupied \n Neighbors')

\n添加级别,但不能使“标准化占用”为黑色,而使“Neigbors”为蓝色。

我能够基于创建解决方案。如您所见,该解决方案不是通用的,但适用于您的特定示例

这里唯一的问题是
x_pos=[0.3,0.4]
,因为您希望将子标题对齐在中间。如果删除
x_pos
并仅使用0.5,您将看到代码仍然有效,但对齐方式有点左对齐。这里我使用
y=1.2
来指定标题在相对坐标中的起始位置
y=0
表示下x轴,
y=1
表示上x轴

我简化了几行以减少复杂性

import matplotlib.pyplot as plt

def rainbow_title(x_pos, y, strings, colors, ax=None, **kw):
    if ax is None:
        ax = plt.gca()

    for x, s, c in zip(x_pos, strings, colors):
        text = ax.text(x, y, s + " ", color=c,  **kw)
        y *= 0.9

x_pos = [0.3, 0.4]        
rainbow_title(x_pos, 1.2, "Normalized occupied\n Neighbors".split('\n'), 
              ['black', 'blue'], size=18)

更改字体大小的简化版本

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

title = "Normalized occupied\n Neighbors"
x_pos = [0.3, 0.4]  
sizes = [18, 14]
colors = ['black', 'blue']
y = 1.2

for x, s, c, size in zip(x_pos, title.split('\n'), colors, sizes):
    text = ax.text(x, y, s + " ", color=c,  size=size)
    y *= 0.9

是的,这完全回答了我的问题。然而,比我预想的要复杂一点。不过,谢谢你的回复。我已经尝试进一步降低复杂性。检查编辑。它花了一些时间来适应您想要的输出,但很高兴知道它回答了您的问题。接下来,如果我们希望颜色和大小都不同,大小是否也可以作为数组输入?这是可能的。我已经在我的答案中添加了一个没有任何功能的非常简单的版本。检查编辑。刚刚看到编辑-谢谢。