因此,当我尝试使用pyplot.subplots
绘制多个子图时,我会得到类似的结果:
我怎么能:
((ax1,ax2),(ax3,ax4)) = subplots
然后执行ax1.plot
两次,但结果两者都没有显示。图片代码:
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()
答案 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')
答案 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)