【问题标题】:Split matplotlib title with different formatting for each level为每个级别使用不同格式拆分 matplotlib 标题
【发布时间】:2019-02-04 02:05:10
【问题描述】:

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

我读过这篇类似的帖子here,它有助于添加多级标题。但是,例如,我仍然不确定如何使它们具有不同的颜色。有什么简单的方法可以做到这一点吗?

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

\n 添加关卡,但不能使“归一化占用”黑色和“邻居”蓝色。

【问题讨论】:

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

标签: python matplotlib data-visualization


【解决方案1】:

我能够创建基于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)

更改字体大小的简化版

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    • 1970-01-01
    • 2017-04-22
    相关资源
    最近更新 更多