我花了很长时间研究如何让两个子图共享相同的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) 我正在用matplotlib创建几个pdf图,它由400个子图组成.每个只有5个数据点.在一台好的电脑上需要420秒才能保存5张pdf图片.有没有办法优化代码,或者matplotlib是正常的?
绘图的部分代码:
plot_cnt = 1
for k in np.arange(K_min, K_max + 1):
for l in np.arange(L_min, L_max + 1):
ax = plt.subplot(grid[0], grid[1], plot_cnt)
plot_cnt += 1
plt.setp(ax, 'frame_on', False)
ax.set_ylim([-0.1, 1.1])
ax.set_xlabel('K={},L={}'.format(k, l), size=3)
ax.set_xlim([-0.1, 4.1])
ax.set_xticks([])
ax.set_yticks([])
ax.grid('off')
ax.plot(np.arange(5), (data['S1']['Azimuth'][:, k - 1, l + offset_l] + \
data['S1']['Delta Speed'][:, k - 1, l + offset_l] + \
data['S1']['Speed'][:, k - 1, l + offset_l]) / 3,
'r-o', ms=1, mew=0, mfc='r')
ax.plot(np.arange(5), data['S2'][case][:, k - 1, l + …
Run Code Online (Sandbox Code Playgroud)