如何添加Matplotlib Colorbar Ticks

seq*_*oia 13 python matplotlib colorbar

堆栈溢出有很多matplotlib colorbar问题,但我无法理解它们以解决我的问题.

如何在彩条上设置yticklabels?

这是一些示例代码:

from pylab import *
from matplotlib.colors import LogNorm
import matplotlib.pyplot as plt

f = np.arange(0,101)                 # frequency 
t = np.arange(11,245)                # time
z = 20*np.sin(f**0.56)+22            # function
z = np.reshape(z,(1,max(f.shape)))   # reshape the function
Z = z*np.ones((max(t.shape),1))      # make the single vector to a mxn matrix
T, F = meshgrid(f,t)
fig = plt.figure()
ax = fig.add_subplot(111)
plt.pcolor(F,T,Z, norm=LogNorm(vmin=z.min(),vmax=z.max()))
plt.xlim((t.min(),t.max()))
mn=int(np.floor(Z.min()))        # colorbar min value
mx=int(np.ceil(Z.max()))         # colorbar max value
md=(mx-mn)/2                     # colorbar midpoint value
cbar=plt.colorbar()              # the mystery step ???????????
cbar.set_yticklabels([mn,md,mx]) # add the labels
plt.show()
Run Code Online (Sandbox Code Playgroud)

Ery*_*Sun 28

更新刻度和刻度标签:

cbar.set_ticks([mn,md,mx])
cbar.set_ticklabels([mn,md,mx])
Run Code Online (Sandbox Code Playgroud)

  • 为什么我的`mx`刻度是唯一在颜色栏中不可见的刻度?怎么会这样 (2认同)

小智 5

沿着条形五个刻度的工作示例(对于任何值范围)是:

m0=int(np.floor(field.min()))            # colorbar min value
m4=int(np.ceil(field.max()))             # colorbar max value
m1=int(1*(m4-m0)/4.0 + m0)               # colorbar mid value 1
m2=int(2*(m4-m0)/4.0 + m0)               # colorbar mid value 2
m3=int(3*(m4-m0)/4.0 + m0)               # colorbar mid value 3
cbar.set_ticks([m0,m1,m2,m3,m4])
cbar.set_ticklabels([m0,m1,m2,m3,m4])
Run Code Online (Sandbox Code Playgroud)