read_and_draw_png.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import multiprocessing
  2. from os import *
  3. from etl.wind_power.min_sec.ClassIdentifier import ClassIdentifier
  4. from utils.draw.draw_file import scatter
  5. from utils.file.trans_methods import read_file_to_df
  6. def draw(file, fengchang='测试'):
  7. name = path.basename(file).split('.')[0]
  8. df = read_file_to_df(file)
  9. del df['lab']
  10. identifier = ClassIdentifier(wind_turbine_number='test', origin_df=df, rated_power=5000, cut_out_speed=20,
  11. active_power='active_power', wind_velocity='wind_velocity',
  12. pitch_angle_blade='pitch_angle_blade_1')
  13. df = identifier.run()
  14. df.loc[df['active_power'] <= 0, 'lab'] = -1
  15. print(df.groupby('lab').count())
  16. color_map = {-1: 'red', 0: 'green', 1: 'blue', 2: 'black', 3: 'orange', 4: 'magenta'}
  17. c = df['lab'].map(color_map)
  18. # -1:停机 0:好点 1:欠发功率点;2:超发功率点;3:额定风速以上的超发功率点 4: 限电
  19. legend_map = {"停机": 'red', "好点": 'green', "欠发": 'blue', "超发": 'black', "额定风速以上的超发": 'orange',
  20. "限电": 'magenta'}
  21. scatter(name, x_label='风速', y_label='有功功率', x_values=df['wind_velocity'].values,
  22. y_values=df['active_power'].values, color=c, col_map=legend_map,
  23. save_file_path=path.dirname(
  24. path.dirname(__file__)) + sep + "tmp" + sep + str(fengchang) + sep + name + '结果.png')
  25. if __name__ == '__main__':
  26. read_dir = r"D:\data\logs\matlib-test"
  27. files = [read_dir + sep + i for i in listdir(read_dir)]
  28. if len(files) == 1:
  29. draw(files[0], "和风元宝山4")
  30. else:
  31. with multiprocessing.Pool(4) as pool:
  32. pool.starmap(draw, [(file, "和风元宝山4") for file in files])