首先将tdms文件解析成dataframe格式数据
创建analysisTdms.py文件
from nptdms import TdmsFile
import numpy as np
import pandas as pd
import operator
from functools import reduce
# 读取文件信息,获取TDMS文件中的组和组内的通道
def summary(tdms_file):
for group in tdms_file.groups(): # TdmsFile可以按组名索引来访问TDMS文件中的组,使用groups()方法直接访问所有组
group_name = group.name
for channel in group.channels(): # TdmsGroup 可以通过通道名称来索引来访问这个组中的一个通道,使用 channels()方法直接访问所有通道
channel_name = channel.name
print('{} -> {}'.format(group_name,channel_name))
# 读取指定通道数据
def readData(tdms_file, group_name, channel_name):
channel = tdms_file[group_name][channel_name] # 根据索引读取通道
all_channel_data = channel[:] # 将此通道中所有的数据作为numpy数组获取
num = np.array(all_channel_data)
df = pd.DataFrame(num) # 将numpy数组中的数据转换成DataFrame并输出
# return np.array(df).flatten().tolist()
return df
if __name__ == '__main__':
with TdmsFile.open('data.tdms') as tdms_file:
summary(tdms_file)
df = readData(tdms_file, 'group', 'plotData')
print(df)
调用analysisTdms文件方法并通过pycharts生成echarts option
from pyecharts import options as opts
from pyecharts.charts import Line
from nptdms import TdmsFile
from analysisTdms import summary, readData
def get_chart():
# 使用pyecharts生成图表
with TdmsFile.open('D:\\365\\demo-python-tdms\\data.tdms') as tdms_file:
summary(tdms_file)
df = readData(tdms_file, 'group', 'plotData')
with TdmsFile.open('D:\\365\\demo-python-tdms\\192.168.1.128.tdms') as tdms_file:
summary(tdms_file)
ef = readData(tdms_file, 'CH1Data', 'plotData')
print(ef)
c = (
Line()
.add_xaxis(df.index.tolist())
.add_yaxis("sales", df.values.tolist(),is_symbol_show=False)
.add_yaxis("price", ef.values.tolist(),is_symbol_show=False)
.set_global_opts(
xaxis_opts=opts.AxisOpts(type_="value", is_scale=True, split_number=10),
yaxis_opts=opts.AxisOpts(is_scale=True, split_number=10),
tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="line")
)
)
# 将图表数据传递给前端页面
chart_data = c.dump_options_with_quotes()
with open('output.txt', 'w') as f:
f.write(chart_data)
if __name__ == '__main__':
get_chart()
最终将获取的echarts option引入echarts文件中,就可获取对应的tdms图像