MGL EFIS数据绘图仪

mgl_efis_plotter的Python项目详细描述


MGL EFIS绘图仪包从 MGL EFIS产品,如IEFI。 它可以同时读取IEFISS.RECIEFISBB.DAT文件。

这个包打算用在笔记本电脑里 创建图表。它还可以将数据保存为csv文件。

安装

作为Anaconda的一部分安装jupyter笔记本 或者从Jupyter网站。

使用pip或您喜爱的python包管理器安装mgl_efis_绘图仪:

pip install mgl_efis_plotter

示例用法

Jupyter笔记本手机:

frommgl_efis_plotterimport*config=Config()flights=create_flights('IEFIS.REC',config)p=Plot(flights[0])# plot pressure altitude vs. density altitude vs. outside air temperaturep.plot2(['pAltitude','densityAltitude','oat']).show()

配置

这是默认配置。您可以做三件事之一:

  1. 照原样使用。
  2. 尽量使用它,只替换一些值。
  3. 几乎把所有东西都换掉,只保留一些不变的东西。
classConfig:units={'airspeed':'knots',# 'knots' or 'kph''barometer':'hg',# 'hg' or 'millibars''fuel':'gallons',# 'gallons' or 'liters''manifoldPressure':'hg',# 'hg' or 'millibars''oilPressure':'psi',# 'psi' or 'millibars''ambientTemperature':'c',# 'f' or 'c''engineTemperature':'f',# 'f' or 'c'}# set each thermocouple value to one of 'cht' or 'egt' or None (capitalized and without quotation marks)# the values that you set here must match the configuration of your RDACthermocouples={1:'cht',2:'egt',3:'cht',4:'egt',5:'cht',6:'egt',7:'cht',8:'egt',9:None,10:None,11:None,12:None,}plot_dimensions=(12,8)# width & height in inchesplot_dpi=100# dots per inchplot_font_size=14rolling_window=16# bigger numbers make smoother graphs; start with 16# iEFIS seems to add about 260 seconds to the timestamp at the top of the hournew_flight_delta=300

要按原样使用,请创建如下单元格:

config=Config

要按原样使用它,只替换几个值,请创建如下单元格:

config=Configconfig.units['barometer']='millibars'config.units['fuel']='liters'

几乎替换所有内容,只保留少数内容不变,创建如下单元格:

classMyConfig(Config):units={'airspeed':'kph',# 'knots' or 'kph''barometer':'millibars',# 'hg' or 'millibars''fuel':'liters',# 'gallons' or 'liters''manifoldPressure':'millibars',# 'hg' or 'millibars''oilPressure':'millibars',# 'psi' or 'millibars''ambientTemperature':'c',# 'f' or 'c''engineTemperature':'c',# 'f' or 'c'}# set each thermocouple value to one of 'cht' or 'egt' or None (capitalized and without quotation marks)# the values that you set here must match the configuration of your RDACthermocouples={1:'cht',2:'cht',3:'cht',4:'cht',5:'egt',6:'egt',7:'egt',8:'egt',9:None,10:None,11:None,12:None,}config=MyConfig()

加载航班

设置好配置后,从文件中加载航班,并用如下单元格打印航班列表:

flights=create_flights('IEFIS.REC',config)foriinrange(0,len(flights)):print(i,':',flights[i])

它将打印如下列表:

0 : Flight at 2019-03-31 11:20:44 to 2019-03-31 11:40:48,  5775 messages, timestamps 486,454,570 to 486,455,853
1 : Flight at 2019-03-31 12:11:53 to 2019-03-31 12:48:18, 10501 messages, timestamps 486,458,099 to 486,460,433
2 : Flight at 2019-03-31 11:20:42 to 2019-03-31 11:20:42,     8 messages, timestamps 486,454,568 to 486,454,568

选择所需的航班并从中创建打印对象。例如,要使用航班1,请创建此单元格:

p=Plot(flights[1])

绘制一个属性

使用以下示例中的行绘制一个属性:

p.plot('asi').show()p.plot('asi','Airspeed').show()p.plot('cht').show()

第二个参数是可选的,用于标记y轴。“cht”和“egt”这两个属性是特殊的; 它们在图形上显示多条线,每个圆柱体一条。

绘制多个属性

在一个图上用直线绘制多个属性这些例子。 注意,属性列表由方括号包围。

p.plot(['asi','groundSpeed']).show()p.plot(['asi','groundSpeed'],['Airspeed','Ground Speed']).show()p.plot(['pAltitude','densityAltitude','oat']).show()

把它们放在一起

这里有几个例子,把所有的东西放在一个单元里。 请注意,在创建了p对象之后,您可以继续重用它。

frommgl_efis_plotterimport*config=Config()flights=create_flights('IEFIS.REC',config)p=Plot(flights[0])p.plot('asi').show()p.plot2(['asi','oilTemperature1']).show()p.plot2(['pAltitude','densityAltitude','oat']).show()

列出所有可用属性

您可以用这条线获得航班可用的所有属性的列表。

p.list_attributes()

将绘图保存到文件

通过将show()替换为save(FILENAME),可以将绘图保存到文件中,如下所示:

p.plot('vsi','Vertical Speed').save('verticalspeed.png')

将数据导出到CSV文件

您可以将任何一组属性导出到csv文件,其中的单元格如下:

p.flight.save_csv('flightdata.csv',['asi','vsi','densityAltitude','oat','rpm','manifoldPressure'])

高级用法

每个情节的X轴是从飞行开始的分钟。 通过添加^ {TT6}$选项,可以通过限制X轴到分钟范围来放大飞行的任何部分。 到plot()plot2()。 下面是一个例子,放大从起飞后5分钟开始到起飞后10分钟结束的时间范围。

p.plot('cht',xlim=(5,10)).show()

作者

艺术泽蒙
电子邮件:art@zemon.name

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在Java中使用Kotlin值类   在Hadoop中表示大文本块作为键的java   java安卓工作室;布局设计视图;   字典Java确定字符串是否以映射中的键开头   JavaG1:混合gc和完全gc之间有什么区别?   java Camunda升级组织。阿帕奇。平民语言错误   java Scanner类具有NextLine无限循环   安卓 GCM Java服务器:发送带有重音字符的消息   java我正在构建一个兴趣计算应用程序,我的项目构建良好,有1个警告,但它不会在我的设备上打开   java在Tilera TileGX上构建OpenJDK 8   GUI中的java惰性初始化与急切初始化   java JodaTime四舍五入到最近的一刻钟   java如何限制菜单。SpringRoo中的jspx可以避免对其他用户的实体执行CRUD操作   java我应该将缓冲流链接到输入流,还是在将声音库作为嵌入式资源加载时使用URL类?