我正在创建一个填充的轮廓图,它具有对数颜色缩放以及比默认选择的颜色更多的颜色。我基本上试图跟随this example,但是在添加更多颜色的同时,每当我添加更多颜色时,颜色条上的数字就会消失(刻度仍在那里)。
我的基本代码是
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import ticker
from matplotlib.colors import LogNorm
z = np.random.lognormal(mean=10, sigma=3, size=(10,10))
fig, ax = plt.subplots()
levels=np.logspace(np.log10(np.min(z)),np.log10(np.max(z)),100)
plot = ax.contourf(z, levels, norm=LogNorm())
cbar = fig.colorbar(plot)
plt.show()
我也尝试过使用
plot = ax.contourf(z, levels, locator=ticker.LogLocator())
另外,按照Matplotlib文档,它似乎是
plot = ax.contourf(z, 100, norm=LogNorm())
应该给我101个对数间隔的颜色级别,但它只是默认为正常的数字。
答案 0 :(得分:0)
原来你需要给colorbar一个定位器,除了给一个绘图功能:
locator = ticker.LogLocator(base=10)
clb = plt.colorbar(plot, format='%.e', ticks=locator)
而不是使用norm
参数,我也使用了绘图函数中的定位器,尽管它看起来没有什么区别,只是看起来更加一致。
plot = ax.contourf(z, levels, locator=locator)
作为旁注,更新版本的matplotlib(至少2.1.1)引入了LogFormatterSciNotation
函数,该函数创建了一个格式化程序对象,可用于使用10创建标签的format
参数^ x种记法。不幸的是,我使用的主要版本是1.5.1,所以我需要使用上面的格式字符串。