2014-12-07 95 views
3

我有一个对数imshow图,当创建颜色条时,它的轴标签和刻度是对数的,但由于值的范围很短(0-50),颜色条看起来像这样:颜色条matplotlib上的日志标签

enter image description here

和我想它代替显示为0,5,10,20,50沿着轴线(对数间距)隔开。

我似乎无法得到这个工作。

感谢您的任何帮助。

回答

5

使用LogFormatter类并将labelOnlyBaseFalse

import matplotlib.pyplot as plt 
import numpy as np 
import matplotlib.colors 
from matplotlib.ticker import LogFormatter 

A = np.random.rand(50,50)*50 
plt.imshow(A, norm=matplotlib.colors.LogNorm()) 
formatter = LogFormatter(10, labelOnlyBase=False) 
cb = plt.colorbar(ticks=[1,5,10,20,50], format=formatter) 
plt.show() 
+0

完美,谢谢! – Jbarrell 2014-12-08 01:32:57