我正在尝试修复此图的格式:
我用“Df
”数据生成的,但我遇到了这个麻烦的问题,两个图太接近了。我用来绘制这个图的脚本是:
#[Df,mdD,teoD,e1f,teoe1,e2f,teoe2] = [[row[i] for row in np.load('master_results.npy',allow_pickle=True)[1][2:]] for i in [0,1,2,3,4,5,6]] #reading Datafile
import matplotlib.gridspec as gridspec
def test_histograms(values):
fig = plt.figure(figsize=(25,15))
gs = gridspec.GridSpec(3, 3)
ax_main = plt.subplot(gs[1:3, :2])
ax_yDist = plt.subplot(gs[1:3, 2],sharey=ax_main)
ax_main.plot(np.arange(len(values)),values, alpha=0.05)
ax_main.scatter(np.arange(len(values)),values, s=20, marker='o',alpha=0.4)
values.sort()
ax_main.plot(values, linewidth=3)
ax_main.set(xlabel="Test number", ylabel=r"$\Delta(t_f)$")
ax_main.grid(True, color='blue', linewidth=3, linestyle='--', alpha=0.1)
ax_main.legend(['_nolegend_', r'$\Delta(t=t_f)$', '$\Delta(t_f)^{\;\mathrm{(sorted)}}$'])
ax_yDist.hist(values,bins=100,orientation='horizontal',align='mid', alpha=0.5)
ax_yDist.hlines(0.0359,0,26,linestyle='--',color='blue')
ax_yDist.grid(True, color='blue', linewidth=3, linestyle='--', alpha=0.1)
ax_yDist.set(xlabel='count')
ax_yCumDist = ax_yDist.twiny()
ax_yCumDist.hist(values,bins=100,cumulative=True,histtype='step',density=True,color='green',align='mid',orientation='horizontal',linewidth=3)
ax_yCumDist.tick_params('x', colors='green')
ax_yCumDist.set_xlabel('cumulative',color='green')
plt.show()
test_histograms(Df)
Df=np.random.uniform(0.0359, 0.0018, 400)
test_histograms(Df)
Df=np.random.rayleigh(0.0359, 400)
test_histograms(Df)
Df=np.random.normal(0.0359, 0.0018, 400)
test_histograms(Df)
您可以使用不同的分布来允许重复性。具体来说,对于3个十进制值,第二个(右)y轴离左侧太近。我希望看到如下内容
第二个图,但对于任何可能的范围。我怎么能解决这个问题?也许在左图和右图之间添加一个薄的“空间”?
1条答案
按热度按时间vm0i2vca1#
使用tight_layout()函数调整子图之间和周围的填充:
验证码:
添加tight_layout之前的输出:
添加tight_layout后的输出:
注意:您可以使用tight_layout的w_pad参数来设置子图之间的填充,例如使用
plt.tight_layout(w_pad=10)
将导致以下结果:我将
ax_main
定义为_
,因为jupyter将不必要的输出打印到控制台。我将标记大小设为s=20;也许它看起来不同,因为我的分辨率或我运行代码的位置。