Python 如何使用matplotlib在多个图形中为X轴(时间戳)设置相同的比例

Python 如何使用matplotlib在多个图形中为X轴(时间戳)设置相同的比例,python,matplotlib,charts,Python,Matplotlib,Charts,我正在使用Python和Matplotlib尝试生成以下内容:四个图表,以5分钟为间隔,绘制在给定时间段内系统接收的消息量与处理这些消息的延迟 也就是说,X轴以五分钟的间隔显示从时间A到时间B(格式为“%Y-%m-%d%H:%m”),而左侧的Y轴显示在任何给定时刻收到的消息量,右Y轴显示处理这些消息的延迟 现在,我在图表中绘制了两个X轴,但我需要每个图形的时间戳都相同,也就是说,所有图形都必须在同一时间点开始和结束,即使某些图表在这些时间内没有事件(例如,图表#1从2015年10月5日的15:5

我正在使用
Python
Matplotlib
尝试生成以下内容:四个图表,以5分钟为间隔,绘制在给定时间段内系统接收的消息量与处理这些消息的延迟

也就是说,
X
轴以五分钟的间隔显示从时间
A
到时间
B
(格式为“
%Y-%m-%d%H:%m
”),而左侧的
Y
轴显示在任何给定时刻收到的消息量,右
Y
轴显示处理这些消息的延迟

现在,我在图表中绘制了两个
X
轴,但我需要每个图形的时间戳都相同,也就是说,所有图形都必须在同一时间点开始和结束,即使某些图表在这些时间内没有事件(例如,图表#1从2015年10月5日的15:50开始,到2015年11月5日的14:00停止,即使其中一个事件从10月5日的17:00开始)。这就是杀手

有人知道我该怎么做吗?非常感谢

有人知道我怎么做吗


如果Stack Overflow允许在问题中发布非MCVE的帖子,那么简单的答案(只说“是”)会从盒子里跳出来,但不会给Stack Overflow无疑是一个伟大的社区带来真正的经验


想一想&你明白了。这绝对是一种没有人会欣赏的方式


问:怎么

您可能会重复使用一些格式化技巧。您可能已经体验过,
matplotlib
的复杂结构有点敏感,格式化发生在
图形的处理过程中。因此,有些东西在“绘制数据之前”工作,有些东西只在“之后”工作绘制数据点/线。因此,请毫不犹豫地测试/重新排序部分,以便在花在这些润色上的合理时间内获得您想要的外观和感觉(真正的价值通常是与数据相关的洞察和现象相关的经验转化为称为knowlege的新的战略价值,不是吗?)

所以几美分:

#---------------------------------------------------- # X-AXIS FORMATTING         
aPlotAX.set_xlim( x_min, x_MAX )                      # X-AXIS LIMITs ---    

#lt.gca().xaxis.set_major_locator(      matplotlib.ticker.FixedLocator( secs ) )
#lt.gca().xaxis.set_major_formatter(    matplotlib.ticker.FuncFormatter( lambda pos, _: time.strftime( "%d-%m-%Y %H:%M:%S", time.localtime( pos ) ) ) )

aPlotAX.xaxis.set_major_locator(   AutoDateLocator() )
aPlotAX.xaxis.set_minor_locator(       HourLocator() )
#PlotAX.xaxis.set_minor_locator(     MinuteLocator() ) # if not too dense

aPlotAX.xaxis.set_major_formatter( DateFormatter( '%Y-%m-%d %H:%M' ) )

# -------------------------------------------------------------------- X-FORMAT
#----------------------------------------------- # 90-deg x-tick-LABELs
try:
    plt.setp( plt.gca().get_xticklabels(),  rotation            = 90,
                                            horizontalalignment = 'right'
                                            )
except:
    print "DEBUG: EXC() on plt.setp( plt.gca().get_xticklabels(),  rotation = 90, ... )"

# --------------------------------------------- # "tight"-en LAYOUT 
try:
    plt.tight_layout()
except:
    print "DEBUG: EXC() on plt.tight_layout()"
'''
SOME pre-SAVE_AS-configuration(s) |||||||||||||||||||||||||||||||||||||||||||||

#Fig.set_figwidth(  1600.0 )
#Fig.set_figheight( 1400.0 )
#                   facecolor = 'k',                  # for inverse colourscheme
#                   edgecolor = 'w',
aFig = plt.figure(  figsize   = ( 5, 5 ), dpi = 100 ) # size not in [inch], but in [spatial-units] a 100-px-each...

#lt .savefig( <aFileNAME.PNG>, transparent = True, dpi = 300 )                      # .PNG with alpha-channel background                        std-[px]-size are 800x600 at dpi

#lt .savefig( <aFileNAME.SVG>, transparent = True, dpi = 300 )                      # .SVG with alpha-channel background                        std-[px]-size are 800x600 at dpi
#lt .savefig( <aFileNAME.000>, transparent = True, dpi = 300, format = "svg" )      # .SVG with alpha-channel background                        std-[px]-size are 800x600 at dpi

#lt .savefig( <aFileNAME.PDF>, transparent = True, dpi = 300 )                      # .PDF with alpha-channel background                        std-[px]-size are 800x600 at dpi

# from matplotlib.backends.backend_pdf import PdfPages                              # .PDF-multi-page document
# pdf_pages = PdfPages('barcharts.pdf')
# aFig = plt.Figure...
# plt.plot...
# pdf_pages.savefig( aFig )     # .closes aPdfPAGE
# ...plot
# pdf_pages.savefig( aFig )     # .closes aPdfPAGE
# pdf_pages.close()             # Finally: fileIO on disk
#----------------------------------------------------------------X轴格式
aPlotAX.set_xlim(x_min,x_MAX)#x轴限制--
#lt.gca().xaxis.set\u major\u定位器(matplotlib.ticker.FixedLocator(secs))
#lt.gca()
aPlotAX.xaxis.set_major_locator(AutoDateLocator())
aPlotAX.xaxis.set_minor_定位器(HourLocator())
#PlotAX.xaxis.set_minor_locator(MinuteLocator())#如果不是太密集
aPlotAX.xaxis.set\u major\u格式化程序(日期格式化程序(“%Y-%m-%d%H:%m”))
#--------------------------------------------------------------X格式
#-----------------------------------------------#90度x刻度标签
尝试:
plt.setp(plt.gca().getxticklabels(),旋转=90,
水平对齐='右'
)
除:
打印“plt.setp(plt.gca().getxticklabels(),rotation=90,…)上的DEBUG:EXC()”
#-------------------------------------------------------------#“紧密”-en布局
尝试:
plt.紧_布局()
除:
打印“在plt.tight_布局()上调试:EXC()”
'''
一些预保存为配置|||||||||||||||||||||||||||||||||||||||||||||
#图集_figwidth(1600.0)
#图集光(1400.0)
#facecolor='k',#用于反向配色方案
#edgecolor='w',
aFig=plt.图(figsize=(5,5),dpi=100)#大小不是以[英寸]为单位,而是以[空间单位]为单位,每个100像素。。。
#lt.savefig(,transparent=True,dpi=300)#.PNG的alpha通道背景标准-[px]-大小为800x600,dpi
#lt.savefig(,transparent=True,dpi=300)#带有alpha通道背景std-[px]-大小的SVG在dpi时为800x600
#lt.savefig(,transparent=True,dpi=300,format=“svg”)#。具有alpha通道背景std-[px]大小的svg在dpi时为800x600
#lt.savefig(,transparent=True,dpi=300)#.PDF,alpha通道背景标准-[px]-尺寸为800x600,dpi
#从matplotlib.backends.backend_pdf导入PdfPages#.pdf多页文档
#pdf_pages=PdfPages('barcharts.pdf'))
#aFig=plt.图。。。
#plt.绘图。。。
#pdf_pages.savefig(aFig)#关闭aPdfPAGE
#…阴谋
#pdf_pages.savefig(aFig)#关闭aPdfPAGE
#pdf_pages.close()#最后:磁盘上的文件IO

请提供您目前掌握的代码。理想情况下,让它成为我们可以运行的可复制示例,而无需先阅读外部数据。您可能希望阅读whathaveyoutried.com,并对StackOverflow社区表示一定的尊重,该社区强烈鼓励发布高质量的问题,以及MCVE(代码的最小完整可验证示例)展示您迄今为止所做的尝试。您可能希望更新您的帖子,以达到最低合理的质量水平,并展示您尊重其他StackOverflow贡献成员的意愿。他们是喜欢回答有关MCVE相关问题的好问题的专业人士。享受StackOverflow贡献成员的身份,并支持此Community netiquette设置相同的
。在所有图形上设置如下所示的\u xlim(x\u min,x\u MAX)
,以使它们在所有图形上都相同。