2017-10-09 71 views
1

我想改變刺的寬度爲兩軸:更改刺的寬度colobar軸

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軸的刺的長度?

回答

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()] 
+0

謝謝你很多關於你的答案!我嘗試使用'cbar.outline',但它找不到該屬性。你提供什麼版本的matplotlib解決方案?我正在使用使用版本1.5.1的舊版代碼進行繪圖,並且無法更新它......我寧願使用不涉及更改全局'rcParams'的本地解決方案,因爲有許多可視化的圖。 – desa

+0

嗯,我只是嘗試了matplotlib v1.5.1和python2.7,它似乎工作。你確定這是你使用的確切版本嗎?我還使用TkAgg後端,而不是使用qt一個,如果這有什麼區別的話。 – bear24rw

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