Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np # мадуль для массива
- import matplotlib.pyplot as plt # для графиков
- step = 1 # шаг
- end = 100 # сторона треугольника
- def makeTryAngl(step, end_): # создает все точки на треугольнике формат Дюваля массив []
- arTotal = []
- for i in np.arange(0, end_+1, step):
- for j in np.arange(0, end_+1, step):
- x = end_ - round(i,1)
- y = round(j,2)
- bary = end_-x-y
- if bary >= 0:
- x = end_ - round(i,1)
- y = round(j,2)
- z = end_ - x - y
- arTotal.append([x,y,z])
- return arTotal
- def DuvToCoor(TryAngl): # меняет формат точек из дюваля в классический (Х и У) формат массив
- Draw = []
- for item in TryAngl:
- y = item[1]*3**0.5/2
- x = end - item[0] - item[1]*0.5
- Draw.append([x,y])
- return Draw
- def CATsection(TryAngl, x1,x2, y1,y2, z1,z2): # вырезает куски графика где x1 начало х2 конец
- leg=[]
- for item in TryAngl:
- if (item[0] >= x1 and item[0] <= x2) and (item[1] >= y1 and item[1] <= y2) and (item[2] >= z1 and item[2] <= z2):
- leg.append(tuple(item))
- return set(leg)
- def graf(TryAngl, color_="none"): # отрисовывет на графике массив точек
- font1 = {'family':'serif','color':'blue','size':20}
- font2 = {'family':'serif','color':'darkred','size':15}
- plt.title("DuvalTriAngle", fontdict = font1)
- plt.xlabel("C2H2", fontdict = font2)
- plt.ylabel("CH4", fontdict = font2)
- z = 3**0.5/2; p = 5
- plt.text(0, 10*z, "10"); plt.text(p, 20*z, "20"); plt.text(2*p, 30*z, "30")
- 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")
- plt.text(7*p, 80*z, "80"); plt.text(8*p, 90*z, "90"); plt.text(9*p, 100*z, "100");
- plt.text(100-p, 10*z, "90"); plt.text(100-2*p, 20*z, "80"); plt.text(100-3*p, 30*z, "70")
- plt.text(100-4*p, 40*z, "60"); plt.text(100-5*p, 50*z, "50"); plt.text(100-6*p, 60*z, "40")
- plt.text(100-7*p, 70*z, "30"); plt.text(100-8*p, 80*z, "20"); plt.text(100-9*p, 90*z, "10");
- Draw = DuvToCoor(TryAngl)
- frame = plt.gca()
- frame.axes.get_xaxis().set_ticks([100,90,80,70,60,50,40,30,20,10,0])
- frame.axes.get_yaxis().set_ticks([])
- plt.yticks(rotation=-30)
- plt.tick_params(axis='y', which='both', labelleft=False, labelright=True)
- x1, y1 = zip(*Draw); x1 = list(x1); y1 = list(y1)
- if color_ == "none":
- plt.plot(x1, y1)
- else:
- plt.plot(x1, y1, color = color_)
- def grafPtr(x,y,z): # отрисовывет на графике точку
- Draw = DuvToCoor([[x,y,z]])
- x1, y1 = zip(*Draw); x1 = list(x1); y1 = list(y1)
- plt.plot(x1, y1,color = "black", marker = "o", linestyle= "--", linewidth = 1, markersize = 10)
- TryAngl = makeTryAngl(step, end) # все точки в треугольнике Дюваля формат массив
- copy = CATsection(TryAngl, 0,100, 0,100, 0,100) # копия всех почек в формате set{}
- D1 = CATsection(TryAngl, 14,100, 0,100, 0,23) # Частичный разряд (ЧР)
- PD = CATsection(TryAngl, 0,100, 98,100, 0,100) # Частичный разряд (ЧР)
- T1 = CATsection(TryAngl, 0, 4, 0, 98, 0, 20) # Тепловое повреждение (Т1) возникает в масле и (или) в бумаге при температуре ниже 300 °С
- T2 = CATsection(TryAngl, 0, 4, 0, 100, 20, 50) # Тепловое повреждение (Т2) возникает в масле и (или) в бумаге при температуре выше 300 °C и ниже 700 °C
- T3 = CATsection(TryAngl, 0, 15, 0, 100, 50, 100) # Тепловое повреждение (Т3) возникает в масле и (или) в бумаге при температуре выше 700 °C с явными признаками карбонизации масла, окрашивания металла (при 800 °C) или плавления металла (при температуре ниже 1000 °C).
- D2_1 = CATsection(TryAngl, 15, 100, 0, 100, 23, 40) # Разряды низкой энергии (D2) составной
- D2_2 = CATsection(TryAngl, 29, 100, 0, 100, 40, 100) # Разряды высокой энергии (D2) составной
- DT_1 = CATsection(TryAngl, 15,29, 0,100, 50,100) # Сочетание тепловых повреждений и разрядов составной
- DT_2 = CATsection(TryAngl, 4,29, 0,100, 40,50) # Сочетание тепловых повреждений и разрядов составной
- DT_3 = CATsection(TryAngl, 4,14, 0,100, 0,40) # Сочетание тепловых повреждений и разрядов составной
- #graf(TryAngl)
- #graf(TryAngl)
- graf(D2_1,'orange')
- graf(D2_2, 'orange')
- graf(T3, "#f3f")
- graf(T2, '#f00')
- graf(T1, "#3fc")
- graf(PD, "#099")
- graf(D1, "#666")
- graf(DT_1, '#75ff89')
- graf(DT_2, '#75ff89')
- graf(DT_3, '#75ff89')
- grafPtr(2,0,98)
- #plt.plot(50, 100*3**0.5/2, color = "g", marker = "o", linestyle= "--", linewidth = 3, markersize = 10)
- plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement