Advertisement
Savelyev_Vyacheslav

DuvalTryAng

Mar 6th, 2022 (edited)
550
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.30 KB | None | 0 0
  1. import numpy as np  # мадуль для массива
  2. import matplotlib.pyplot as plt # для графиков
  3. step = 1   # шаг
  4. end = 100  # сторона треугольника
  5.  
  6. def makeTryAngl(step, end_): # создает все точки на треугольнике формат Дюваля массив []
  7.     arTotal = []
  8.     for i in np.arange(0, end_+1, step):
  9.         for j in np.arange(0, end_+1, step):
  10.             x = end_ - round(i,1)
  11.             y = round(j,2)
  12.             bary = end_-x-y
  13.             if bary >= 0:
  14.                 x = end_ - round(i,1)
  15.                 y = round(j,2)
  16.                 z = end_ - x - y  
  17.                 arTotal.append([x,y,z])
  18.     return arTotal
  19.  
  20. def DuvToCoor(TryAngl): # меняет формат точек из дюваля в классический (Х и У) формат массив
  21.     Draw = []
  22.     for item in TryAngl:
  23.         y = item[1]*3**0.5/2
  24.         x = end - item[0] - item[1]*0.5
  25.         Draw.append([x,y])
  26.     return Draw
  27.  
  28. def CATsection(TryAngl, x1,x2, y1,y2, z1,z2): # вырезает куски графика где x1 начало х2 конец
  29.     leg=[]
  30.     for item in TryAngl:
  31.         if (item[0] >= x1 and item[0] <= x2) and (item[1] >= y1 and item[1] <= y2) and (item[2] >= z1 and item[2] <= z2):
  32.             leg.append(tuple(item))
  33.     return set(leg)
  34.  
  35. def graf(TryAngl, color_="none"):  # отрисовывет на графике массив точек
  36.     font1 = {'family':'serif','color':'blue','size':20}
  37.     font2 = {'family':'serif','color':'darkred','size':15}
  38.     plt.title("DuvalTriAngle", fontdict = font1)
  39.     plt.xlabel("C2H2", fontdict = font2)
  40.     plt.ylabel("CH4", fontdict = font2)
  41.     z = 3**0.5/2; p = 5
  42.     plt.text(0, 10*z, "10"); plt.text(p, 20*z, "20");  plt.text(2*p, 30*z, "30")
  43.     plt.text(3*p, 40*z, "40"); plt.text(4*p, 50*z, "50"); plt.text(5*p, 60*z, "60");  plt.text(6*p, 70*z, "70")
  44.     plt.text(7*p, 80*z, "80"); plt.text(8*p, 90*z, "90"); plt.text(9*p, 100*z, "100");  
  45.    
  46.     plt.text(100-p, 10*z, "90"); plt.text(100-2*p, 20*z, "80");  plt.text(100-3*p, 30*z, "70")
  47.     plt.text(100-4*p, 40*z, "60"); plt.text(100-5*p, 50*z, "50");  plt.text(100-6*p, 60*z, "40")
  48.     plt.text(100-7*p, 70*z, "30"); plt.text(100-8*p, 80*z, "20"); plt.text(100-9*p, 90*z, "10");  
  49.     Draw = DuvToCoor(TryAngl)
  50.     frame = plt.gca()
  51.      
  52.     frame.axes.get_xaxis().set_ticks([100,90,80,70,60,50,40,30,20,10,0])
  53.     frame.axes.get_yaxis().set_ticks([])
  54.     plt.yticks(rotation=-30)
  55.     plt.tick_params(axis='y', which='both', labelleft=False, labelright=True)
  56.     x1, y1 = zip(*Draw); x1 = list(x1); y1 = list(y1)
  57.     if color_ == "none":
  58.         plt.plot(x1, y1)
  59.     else:
  60.         plt.plot(x1, y1, color = color_)
  61.    
  62.    
  63. def grafPtr(x,y,z):  # отрисовывет на графике точку
  64.     Draw = DuvToCoor([[x,y,z]])
  65.     x1, y1 = zip(*Draw); x1 = list(x1); y1 = list(y1)
  66.     plt.plot(x1, y1,color = "black", marker = "o", linestyle= "--", linewidth = 1, markersize = 10)
  67.    
  68. TryAngl = makeTryAngl(step, end)  # все точки в треугольнике Дюваля формат массив
  69. copy = CATsection(TryAngl, 0,100, 0,100, 0,100)  #  копия всех почек в формате set{}
  70. D1 = CATsection(TryAngl, 14,100, 0,100, 0,23)  # Частичный разряд (ЧР)  
  71. PD = CATsection(TryAngl, 0,100, 98,100, 0,100)  # Частичный разряд (ЧР)  
  72. T1 = CATsection(TryAngl, 0, 4, 0, 98, 0, 20)  # Тепловое повреждение (Т1) возникает в масле и (или) в бумаге при температуре ниже 300 °С
  73. T2 = CATsection(TryAngl, 0, 4, 0, 100, 20, 50)  # Тепловое повреждение (Т2) возникает в масле и (или) в бумаге при температуре выше 300 °C и ниже 700 °C
  74. T3 = CATsection(TryAngl, 0, 15, 0, 100, 50, 100)  # Тепловое повреждение (Т3) возникает в масле и (или) в бумаге при температуре выше 700 °C с явными признаками карбонизации масла, окрашивания металла (при 800 °C) или плавления металла (при температуре ниже 1000 °C).
  75.  
  76. D2_1 = CATsection(TryAngl, 15, 100, 0, 100, 23, 40)  # Разряды низкой энергии (D2) составной
  77. D2_2 = CATsection(TryAngl, 29, 100, 0, 100, 40, 100)  # Разряды высокой энергии (D2) составной
  78.  
  79. DT_1 = CATsection(TryAngl, 15,29, 0,100, 50,100)  # Сочетание тепловых повреждений и разрядов составной
  80. DT_2 = CATsection(TryAngl, 4,29, 0,100, 40,50)  # Сочетание тепловых повреждений и разрядов составной
  81. DT_3 = CATsection(TryAngl, 4,14, 0,100, 0,40)  # Сочетание тепловых повреждений и разрядов составной
  82. #graf(TryAngl)
  83.  
  84. #graf(TryAngl)
  85. graf(D2_1,'orange')
  86. graf(D2_2, 'orange')
  87. graf(T3, "#f3f")
  88. graf(T2, '#f00')
  89. graf(T1, "#3fc")
  90. graf(PD, "#099")
  91. graf(D1, "#666")
  92. graf(DT_1, '#75ff89')
  93. graf(DT_2, '#75ff89')
  94. graf(DT_3, '#75ff89')
  95. grafPtr(2,0,98)
  96. #plt.plot(50, 100*3**0.5/2, color = "g", marker = "o", linestyle= "--", linewidth = 3, markersize = 10)
  97.  
  98. plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement