在colobar轴上改变刺的宽度

时间:2017-10-09 23:57:49

标签: python matplotlib

我想改变两个轴的刺的宽度:

img = np.random.normal(size=(100, 100))

fig, ax = plt.subplots()
cax = ax.imshow(img)

cbar = fig.colorbar(cax, ticks=np.linspace(0, 70, 8))
[i.set_linewidth(3) for i in cbar.ax.spines.itervalues()]
[i.set_linewidth(3) for i in ax.spines.itervalues()]

但是,结果我得到以下结果:

enter image description here

如何更改colorer轴的刺的长度?

2 个答案:

答案 0 :(得分:1)

我希望您的解决方案能够正常运行,但可能的解决方法是设置axes.linewidth并删除set_linewidth(3)

import matplotlib
matplotlib.rcParams['axes.linewidth'] = 3

我通过找到这个来找出这个工作:

https://github.com/matplotlib/matplotlib/blob/ac8f340c9a771871c894aecdc12a9111958271dd/lib/matplotlib/colorbar.py#L429

修改

或者,您可以直接设置轮廓线宽度:

img = np.random.normal(size=(100, 100))

fig, ax = plt.subplots()
cax = ax.imshow(img)

cbar = fig.colorbar(cax, ticks=np.linspace(0, 70, 8))
cbar.outline.set_linewidth(3)
[i.set_linewidth(3) for i in ax.spines.itervalues()]

答案 1 :(得分:1)

您可以尝试再次设置颜色条轴的框架,以便对其刺的更改生效。

cbar.ax.set_frame_on(True)

完整示例(仅使用matplotlib 2.0测试)

import matplotlib.pyplot as plt
import numpy as np

img = np.random.normal(size=(100, 100))

fig, ax = plt.subplots()
im = ax.imshow(img)

cbar = fig.colorbar(im, ticks=np.linspace(0, 70, 8))
cbar.ax.set_frame_on(True)
[i.set_linewidth(3) for i in cbar.ax.spines.itervalues()]
[i.set_linewidth(3) for i in ax.spines.itervalues()]

plt.show()

enter image description here