在最后一个colormap子图matplotlib中丢失边缘值

时间:2016-11-24 23:05:32

标签: python matplotlib

我使用的是python 3.5.2和matplotlib 1.5.3。

我正在使用" y"做一些色彩映射。轴共享。 问题是当将颜色条放在最后一个子图中时,我会丢失x轴上的第一个和最后一个刻度。但是如果放大图形(例如figsize =(12,3)),另一个子图的边缘会出现一些空白区域。

import numpy as np
import matplotlib.pyplot as plt

matrix = np.random.random((10, 10, 3))
fig = plt.figure(figsize=(10, 3)) # Try a figsize=(12, 3)

for i in range(3):
    if i == 0:
        ay1 = plt.subplot(1, 3, i+1)
    else:
        plt.subplot(1, 3, i+1, sharey=ay1)
    plt.imshow(matrix[:, :, i], interpolation='nearest')
    if i == 2:
        plt.colorbar()
plt.show()

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

如果您使用不同大小的图片,则仅使用sharey才有意义。但是当图像大小不同时,图中的某些部分没有任何东西 - 它们会被涂成白色。

另一方面,如果您的图片大小与此处相同,则无需使用sharey。在这种情况下,您可以简单地绘制数据并添加颜色条。

import numpy as np
import matplotlib.pyplot as plt

matrix = np.random.random((10, 10, 3))

fig, ax = plt.subplots(1,3, figsize=(12, 3))
plt.subplots_adjust(left=0.05, right=0.85)
for i in range(3):
    im = ax[i].imshow(matrix[:, :, i], interpolation='nearest')
    ax[i].set_aspect("equal")

plt.draw()
p = ax[-1].get_position().get_points().flatten()
ax_cbar = fig.add_axes([0.9,p[1], 0.02, p[3]-p[1]] )
plt.colorbar(im, cax=ax_cbar)

plt.show()

enter image description here