2016-07-06 59 views
0

我使用Pylab(PL)的次要情节的功能如下:使用Pylab次要情节功能:具有不同X排队次要情节轴

f, (ax1, ax2, ax3, ax4) = pl.subplots(4, sharex=True, sharey=False) 

比方说,T0,T1,T2,T3成为四个时间戳按时间顺序排列。轴对象ax1和ax2生成时间戳t0和t2之间降水和气温数据的子图,总数为100个数据点。轴对象ax3和ax4在时间戳t1和t3之间生成总数为500个数据点的相对湿度和风数据的子图。

import matplotlib.dates as dates 
time_numbers1 = dates.datestr2num(time_array1) 
time_numbers2 = dates.datestr2num(time_array2) 

,我遇到的问题是毫不奇怪:当我运行我的代码,生成的图形显示AX1和AX2数据被扭曲和不

两个时间阵列使用转换为十进制数符合ax3和ax4中的数据。

我知道,我的问题是依赖于我的过于简单的使用这个次要情节设置的:

sharex=True 

有没有人有建议/想法,处理这个问题的绘图?要清楚的是,这不是一个死或死的情况,因为我总是可以摆弄数据(例如,零填充,插值,平均)以获得数据排列。然而,这是很多数据,所以我很好奇,如果有任何聪明的绘图解决方案可能在那里。

回答

0

恐怕plt.subplots是你做太多事情,你不知道。如果你想要简单的数字,它的效果很好,但如果你想做一些稍微先进的事情,通常最好是创建自己的图形并手动添加子图。即

import matplotlib.pyplot as plt 
fig = plt.figure() 
ax1 = fig.add_subplot(4, 1, 1) 
ax2 = fig.add_subplot(4, 1, 2, sharex=ax1) 
ax3 = fig.add_subplot(4, 1, 3) 
ax4 = fig.add_subplot(4, 1, 4, sharex=ax3) 

这应该强制只有两个x轴是共享的,但是是两对。在这种情况下,我会说,而不是堆叠它们可能是与网格更好,因为

import matplotlib.pyplot as plt 
fig = plt.figure() 
ax1 = fig.add_subplot(2, 2, 1) 
ax2 = fig.add_subplot(2, 2, 2) 
ax3 = fig.add_subplot(2, 2, 3, sharex=ax1) 
ax4 = fig.add_subplot(2, 2, 4, sharex=ax3) 

希望它能帮助!

+0

谢谢@pathoren!这正是我需要的。 – Stewart

+0

好!如果您发现它有用,请接受答案。 – pathoren

+0

是的,我试图找到如何“接受”你的答案昨天,但我不知道如何。当然,一旦我知道该怎么做,这非常容易:只需点击灰色复选标记即可。很好。 – Stewart