首页 > 解决方案 > 用颜色图填充子图 - Matplotlib LogNorm 不再适用于 python 3

问题描述

我在 python 2.7 中创建了一些非常漂亮的图,看起来像这样。

在此处输入图像描述

现在看来 LogNorm 不再起作用了。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import LogNorm

fig = plt.figure()
ax = fig.add_subplot(111)
        
# creating logspaced values for colorbar
x = np.logspace(-8,-3,6)
yarr = np.vstack((x,))
print(yarr)

# check if yarr is really logspaced
ax.plot(yarr, [1e1]*len(yarr), 'w.-')

# fill box with colorbar - this does not work anymore
ax.imshow(yarr, extent=(1e-8, 1e-3, 1, 1e4), norm=LogNorm(vmin=1e-8, vmax=1e-3))


ax.set_xscale("log")
ax.set_yscale("log")

立即输出

在此处输入图像描述

提前致谢。

标签: pythonpython-3.xmatplotlib

解决方案


有人向我指出这是matplotlib的问题:

https://github.com/matplotlib/matplotlib/issues/7661/

import numpy as np
import matplotlib.pyplot as plt

tmp = np.arange(199).reshape(1, 199)
y = np.logspace(0, -4, 2)
x = np.logspace(-8, -3, 200)

fig, ax = plt.subplots()
ax.set_xscale('log')
ax.set_yscale('log')

ax.pcolormesh(x, y, tmp)

plt.show()

这解决了问题。


推荐阅读