我使用的是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()
这样做的正确方法是什么?
答案 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()