我花了很长时间研究如何让两个子图共享相同的y轴,并在Matplotlib中共享两个单色条.
正在发生的事情是,当我打电话给colorbar()在任一功能subplot1或者subplot2,它会自动缩放的情节使得彩条加的情节会适合进入"插曲"包围盒内部,造成两个并排侧地块是两个非常不同的大小.
为了解决这个问题,我尝试创建了第三个子图,然后我将其修改为不存在只有一个颜色条存在的图.唯一的问题是,现在这两个地块的高度和宽度是不均匀的,我无法弄清楚如何使它看起来没问题.
这是我的代码:
from __future__ import division
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import patches
from matplotlib.ticker import NullFormatter
# SIS Functions
TE = 1 # Einstein radius
g1 = lambda x,y: (TE/2) * (y**2-x**2)/((x**2+y**2)**(3/2))
g2 = lambda x,y: -1*TE*x*y / ((x**2+y**2)**(3/2))
kappa = lambda x,y: TE / (2*np.sqrt(x**2+y**2))
coords = np.linspace(-2,2,400)
X,Y = np.meshgrid(coords,coords)
g1out = g1(X,Y)
g2out = g2(X,Y)
kappaout = kappa(X,Y)
for i in range(len(coords)):
for …Run Code Online (Sandbox Code Playgroud) 我需要在图中添加两个子图.一个子图需要大约是第二个(相同高度)的三倍.我使用GridSpec和colspan论证完成了这个,但我想这样做,figure所以我可以保存为PDF.我可以使用figsize构造函数中的参数调整第一个数字,但是如何更改第二个图的大小?
我正在制作一个总共68个子图的数字,并希望删除它们之间的空白区域.这就是我所拥有的:
.
我该怎么做呢?
编辑:使用plt.tight_layout()会使情况变得更糟:

这是我的代码:
for j in range(0,len(sort_yf)):
for i in range(0,len(yf)):
if yf[i]==sort_yf[j]:
sort_ID=np.append(sort_ID,'output/'+ID[i]+'.png')
for i in range (1,69):
plt.subplot(17,4,i,aspect='equal')
plots=img.imread(sort_ID[i])
plt.imshow(plots)
plt.axis('off')
plt.show()
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个很好的图,它连接了一个 4x4 的子图网格(与 gridspec 一起放置,每个子图为 8x8 像素)。我一直在努力使情节之间的间距与我试图告诉它做的事情相匹配。我想问题是由于在图的右侧绘制了一个颜色条,并调整了图中图的位置以适应。然而,即使没有包含颜色条,这个问题似乎也会出现,这让我更加困惑。它也可能与边距有关。下面显示的图像是由相关代码生成的。正如你所看到的,我试图让图之间的空间变为零,但它似乎不起作用。任何人都可以建议吗?
fig = plt.figure('W Heat Map', (18., 15.))
gs = gridspec.GridSpec(4,4)
gs.update(wspace=0., hspace=0.)
for index in indices:
loc = (i,j) #determined by the code
ax = plt.subplot(gs[loc])
c = ax.pcolor(physHeatArr[index,:,:], vmin=0, vmax=1500)
# take off axes
ax.axis('off')
ax.set_aspect('equal')
fig.subplots_adjust(right=0.8,top=0.9,bottom=0.1)
cbar_ax = heatFig.add_axes([0.85, 0.15, 0.05, 0.7])
cbar = heatFig.colorbar(c, cax=cbar_ax)
cbar_ax.tick_params(labelsize=16)
fig.savefig("heatMap.jpg")
Run Code Online (Sandbox Code Playgroud)
同样,在制作没有颜色条的方形图形时:
fig = plt.figure('W Heat Map', (15., 15.))
gs = gridspec.GridSpec(4,4)
gs.update(wspace=0., hspace=0.)
for index in indices:
loc = (i,j) #determined by the …Run Code Online (Sandbox Code Playgroud)