我怎样才能让matplotlib的`subplots`中的每个图使用不同的轴?

时间:2013-05-17 14:02:38

标签: matplotlib axes

因此,当我尝试使用pyplot.subplots绘制多个子图时,我会得到类似的结果:

Four subplots

我怎么能:

  1. 每个子图的多个独立轴
  2. 每个子剧情的轴
  3. 使用子图在每个子图轴中叠加图。我尝试((ax1,ax2),(ax3,ax4)) = subplots然后执行ax1.plot两次,但结果两者都没有显示。
  4. 图片代码:

    import string
    import matplotlib
    matplotlib.use('WX')
    
    import matplotlib.pyplot as plt
    import matplotlib.mlab as mlab
    import numpy as np
    from itertools import izip,chain
    
    
    f,((ax1,ax2),(ax3,ax4)) = plt.subplots(2,2,sharex='col',sharey='row')
    
    ax1.plot(range(10),2*np.arange(10))
    ax2.plot(range(10),range(10))
    ax3.plot(range(5),np.arange(5)*1000)
    #pyplot.yscale('log')
    #ax2.set_autoscaley_on(False)
    #ax2.set_ylim([0,10])
    
    
    plt.show()
    

2 个答案:

答案 0 :(得分:3)

问题1& 2:

要完成此操作,请明确设置子图选项sharex和sharey = False。

在代码中替换此行以获得所需结果。

f,((ax1,ax2),(ax3,ax4)) = plt.subplots(2,2,sharex=**False**,sharey=**False**)

或者,这两个选项可以完全省略,因为False是默认值。 (如下面 rubenvb 所述)

问题3:

以下是将二次图添加到两个子图中的两个示例:

(在 plt.show()之前添加此代码段

# add an additional line to the lower left subplot
ax3.plot(range(5),-1*np.arange(5)*1000)

# add a bar chart to the upper right subplot                                                                                                                                                         
width = 0.75       # the width of the bars
x=np.arange(2,10,2)
y=[3,7,2,9]

rects1 = ax2.bar(x, y, width, color='r')

Subplots with independent axes, and "multiple" plots

答案 1 :(得分:0)

不要告诉它分享轴:

f, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2)

ax1.plot(range(10),2*np.arange(10))
ax2.plot(range(10),range(10))
ax3.plot(range(5),np.arange(5)*1000)

doc