Matplotlib 颜色条背景和标签放置

Posted

技术标签:

【中文标题】Matplotlib 颜色条背景和标签放置【英文标题】:Matplotlib colorbar background and label placement 【发布时间】:2013-08-26 12:41:00 【问题描述】:

直到最近,我一直在使用 Mathematica 进行绘图。虽然这真的很痛苦,而且一切都必须手动完成,但结果非常接近我想要的。一个例子如下:

我真的很喜欢颜色条背景中的灰色圆角矩形。虽然在 Mathematica 中必须手动调整所有内容,但 matplotlib 更加自动化并且已经产生了不错的结果。

但是我还有两个问题:

    我不知道如何在背景中做一个圆角矩形。我查看了 fancybbox 补丁,但没有让它像我想要的那样与颜色条一起工作。获得 Mathematica 盒子之类的东西的最佳方法是什么?对于情节中的传说,似乎有一个花哨的 bbox 选项......但不是用于颜色条 当我使用“小号”(

我期待任何指向正确方向的建议:)。

【问题讨论】:

***.com/questions/15882249/… 请给我们看代码。 旁白:非常华丽的数据。 【参考方案1】:

对于第二个问题:您可以使用负的 labelpad 值将标签移回刻度标签,如下所示:

import numpy as np
import matplotlib.pyplot as plt

data = np.linspace(0, 10, num=256).reshape(16,16) 

cf = plt.contourf(data, levels=(0, 2.5, 5, 7.5, 10))
cb = plt.colorbar(cf)

cb.set_ticklabels([r'$<10^0$', 1, 2, r'$10^14$', r'$10^14+12345678$'])
cb.set_label(r'$n_e$ in $m^-3$', labelpad=-40, y=0.45)

plt.show()

使用参数y,您还可以向上或向下移动标签以获得更好的对称性。

labelpad 的参数以磅(1/72 英寸)为单位。 y 接受 [0, 1] 中的值,0.0 是下边框,1.0 是上边框。

结果:

【讨论】:

y 不限于区间[0.0, 1.0]。它可以采用任何浮点数/整数。如果y &gt; 1.0,标签将放置在轴的顶部上方,如果y &lt; 0.0,标签将放置在轴的底部下方。轴坐标已标准化,这意味着0.0 是轴范围的“起点”,1.0 是“终点”。 要明确一点:[0, 1]间隔表示法,而不是列表表示法。因此这意味着从01,包括在内。这适用于上面的答案和评论。 你能告诉我在哪里可以找到ylabelpad 这些参数,因为我在documentation 或源代码中都没有找到它们? 我偶然发现cb.set_label实际上是一个text,因此y是文本属性。仍然想知道如何确定在此page 中找到的**kw 的更多详细信息。

以上是关于Matplotlib 颜色条背景和标签放置的主要内容,如果未能解决你的问题,请参考以下文章

在颜色条 matplotlib 上记录标签

matplotlib:颜色条及其文本标签

matplotlib 颜色条刻度标签格式

matplotlib自定义设置plt.colorbar函数配置颜色条的刻度数实战:自定义设置颜色条刻度并为刻度值进行命名和标签化

Python / Matplotlib:带有contourf的颜色条不尊重自定义cmap的刻度标签

Matplotlib 颜色条未显示 2 个离散值的标签