拆分matplotlib冠军不同的格式对每个级别

问题描述 投票:1回答:1

我试图做的是有四个级别都具有不同的格式规范为每个级别冠军的matplotlib阴谋。

我读这类似的帖子here与添加多级标题帮助。不过,我仍然不确定如何使它们各自不同的颜色例如。有没有简单的方法来做到这一点?

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

\ n增加了水平,但不能让“规范化占领”黑色和“邻居”蓝色。

python matplotlib data-visualization
1个回答
0
投票

我能够创建基于this official example的解决方案。正如你所看到的,解决的办法是不通用的,而是适用于您的具体的例子。

这里唯一的问题具体的事情是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)

enter image description here

简化版本,字体大小变化

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

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.