1 import os 2 from configparser import ConfigParser 3 import matplotlib.pyplot as plt 4 5 plt.rcParams['font.sans-serif']=['SimHei'] 6 plt.rcParams['axes.unicode_minus']=False 7 8 configFile='config.ini' 9 #section列表 10 sectionList = [] 11 12 #每行元素个数 13 elements = 0 14 #元素名称列表 15 nameList = [] 16 #整理后的数据列表 17 elementsList = [] 18 19 #待分析文件名称 20 txtFileName = '' 21 22 #判断字符串是否为浮点数 23 def isFloatNum(str): 24 s = str.split('.') 25 if len(s) > 2: 26 return False 27 else: 28 for si in s: 29 if not si.isdigit(): 30 return False 31 return True 32 33 def readTxtFile(): 34 #默认了文件存在 35 f = open(txtFileName , encoding='utf-8') 36 # 将文件按行读到list当中 37 data = f.readlines() 38 39 # 关文件 40 f.close() 41 42 #数据处理 43 for i in range(0 , len(data)): 44 global elements 45 global elementsList 46 line = data[i].replace('\n','') 47 elementList = line.split(',') 48 #分割后判断元素个数 49 if len(elementList) == elements: 50 isFloat = True 51 # 数据判断,判断每个数据是否是浮点数 52 for i in range(0,elements): 53 if isFloatNum(elementList[i]) == False: 54 isFloat = False 55 #如果本行数据符合分析格式 56 if isFloat == True: 57 for i in range(0,elements): 58 elementsList[i].append(float(elementList[i])) 59 60 else: 61 print("Discard the data:" + line) 62 else: 63 print("Discard the data:" + line) 64 # print(elementsList) 65 # print(len(data)) 66 # print(data) 67 68 69 70 #读取配置文件 71 def readConfigFile(): 72 global txtFileName 73 global elements 74 global nameList 75 global elementsList 76 file_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), configFile) 77 cf = ConfigParser() 78 cf.read(configFile, encoding='utf-8') 79 #读取每行元素个数 80 elements = cf.getint('dataInfo', 'elements') 81 #读取元素名称 82 if elements > 0: 83 for i in range(0 , elements): 84 nameList.append(cf.get('dataInfo','C'+ str(i+1) + 'Name')) 85 elementsList.append([]) 86 # print(nameList) 87 #读取待分析文件路径 88 txtFileName = cf.get('file','fileName') 89 print(txtFileName) 90 91 # sectionList = cf.sections() 92 # print(len(sectionList)) 93 # print(sectionList)#['dataInfo'] 94 #配置项 95 # print(cf.options('dataInfo'))#['elements', 'c1name', 'c2name', 'c3name', 'c4name', 'c5name', 'c6name'] 96 #键值对 97 # print(cf.items('dataInfo')) 98 99 #获取值 100 # print(cf.getint('dataInfo','elements')) 101 # print(cf.get('dataInfo','C2Name')) 102 103 def drawPolyline(): 104 global elementsList 105 #第一个图 106 plt.subplot(2,4,1) 107 plt.title("浓度图") 108 plt.plot(elementsList[0],label="浓度") 109 plt.xlabel("X") 110 plt.ylabel("Y") 111 plt.legend() 112 113 #第二个图 114 plt.subplot(2,4,2) 115 plt.title("幅值图") 116 plt.plot(elementsList[1],label="平均幅值") 117 plt.plot(elementsList[2],label="实时幅值") 118 plt.xlabel("X") 119 plt.ylabel("Y") 120 plt.legend() 121 122 #第三个图 123 plt.subplot(2,4,3) 124 plt.title("实时自学习曲线图1") 125 plt.plot(elementsList[1],label="平均幅值") 126 plt.plot(elementsList[3],label="实时学习基值") 127 plt.xlabel("X") 128 plt.ylabel("Y") 129 plt.legend() 130 131 #第四个图 132 plt.subplot(2,4,4) 133 plt.title("实时自学习曲线图2") 134 plt.plot(elementsList[2],label="实时幅值") 135 plt.plot(elementsList[3], label="实时学习基值") 136 plt.xlabel("X") 137 plt.ylabel("Y") 138 plt.legend() 139 140 #第二列第一个图 141 plt.subplot(2,4,5) 142 plt.title("温度-湿度图") 143 plt.plot(elementsList[4],label="温度") 144 plt.plot(elementsList[5],label="湿度") 145 plt.xlabel("X") 146 plt.ylabel("Y") 147 plt.legend() 148 149 #第二列第二个图 150 plt.subplot(2,4,6) 151 plt.title("温度-平均幅值图") 152 plt.plot(elementsList[4],label="温度") 153 plt.plot(elementsList[1],label="平均幅值") 154 plt.xlabel("X") 155 plt.ylabel("Y") 156 plt.legend() 157 158 #第二列第三个图 159 plt.subplot(2,4,7) 160 plt.title("湿度-平均幅值图") 161 plt.plot(elementsList[5],label="湿度") 162 plt.plot(elementsList[1],label="平均幅值") 163 plt.xlabel("X") 164 plt.ylabel("Y") 165 plt.legend() 166 167 168 # for i in range(0,len(elementsList)): 169 # plt.plot(elementsList[i]) 170 plt.show() 171 172 if __name__ == '__main__': 173 readConfigFile() 174 readTxtFile() 175 drawPolyline() 176 # See PyCharm help at https://www.jetbrains.com/help/pycharm/
#config.ini
#待解析文件名称 [file] fileName=test.txt #数据格式 [dataInfo] #每行元素个数 elements=6 #第一个元素名称 C1Name=concentration #第二个元素名称 C2Name=meanValue #第三个元素名称 C3Name=realTimeValue #第四个元素名称 C4Name=baseValue #第五个元素名称-温度 C5Name=temp #第六个元素名称-湿度 C6Name=humi #设备数据绘制曲线参数 [devDisplay] #放大倍数 devC1Magn=1 devC2Magn=1 devC3Magn=1 devC4Magn=1 devC5Magn=1 devC6Magn=1 #显示的列号 devDisColumn = 1,2,3,4,5,6
标签:plot,plt,python,matplotlib,label,print,elementsList,折线图,elements From: https://www.cnblogs.com/fly28/p/17781185.html