如何向下移动彩条标签?

时间:2015-11-09 03:22:58

标签: python matplotlib

我想知道是否有一种很好的方法可以将颜色条的标签垂直向下移动一些偏移量?

我已经尝试了 bar.ax.yaxis.labelpad ,它允许我将标签水平移动一些偏移,但不能垂直移动。

我知道 bar.ax.yaxis.set_label_coords(x,y),它可以显式设置坐标。但问题是我不知道如何为我设置初始坐标值来设置y坐标的相对偏移量。

1 个答案:

答案 0 :(得分:3)

如果您想更改垂直颜色条上标签的y位置,请更改y坐标。默认值为0.5,单位是颜色条高度的分数。

例如,让我们将标签放在彩条上方1/4处,而不是1/2:

import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
im = ax.imshow(np.random.random((10, 10)), cmap='gist_earth')
cbar = fig.colorbar(im)
cbar.set_label('Test', y=0.25)
plt.show()

enter image description here

您可能还想将其放在颜色条的末尾。在这种情况下,您可能还想更改文本的对齐方式。请注意,默认情况下,matplotlib中的文本对齐将相对于文本的预旋转位置(取决于rotation_mode的值)。因此,我们要更改文本的水平对齐方式,而不是垂直对齐方式。

例如,让我们将文本与颜色条的顶部对齐:

import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
im = ax.imshow(np.random.random((10, 10)), cmap='gist_earth')
cbar = fig.colorbar(im)
cbar.set_label('Test', y=1.0, ha='right')
plt.show()

enter image description here

最底层:

import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
im = ax.imshow(np.random.random((10, 10)), cmap='gist_earth')
cbar = fig.colorbar(im)
cbar.set_label('Test', y=0, ha='left')
plt.show()

enter image description here

最后,您可能还希望文本以其他方式运行。在这种情况下,您可以调整文本的旋转以及垂直和水平对齐(同样,对齐方式相对于预旋转文本):

import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
im = ax.imshow(np.random.random((10, 10)), cmap='gist_earth')
cbar = fig.colorbar(im)
cbar.set_label('Test', y=0, ha='right', rotation=-90, va='bottom')
plt.show()

enter image description here