Untitled
unknown
python
a year ago
4.2 kB
4
Indexable
def Vertical_line(ds_dinh, line3_x_start, line3_x_end, line3_y, line4_y, ver_line_start, ver_line_end): X0 = line3_x_end - 1.5 for dinh in ds_dinh: plt.plot([X0, X0], [ver_line_start, ver_line_end], color='black') #print(line3_y) plt.text(X0 +0.01 , ver_line_end, dinh, fontsize=12, verticalalignment='bottom', horizontalalignment='right') plt.text(X0 - 0.05, line3_y[0]-0.08, 'S', fontsize=12, verticalalignment='bottom', horizontalalignment='right') # Thêm nhãn 'D' kế bên giao điểm của Line5 và Line3 plt.text(X0 + 0.16, line3_y[0]-0.08, 'D', fontsize=12, verticalalignment='bottom', horizontalalignment='right') plt.text(X0 - 0.05, line4_y[0]+0.02, 'S', fontsize=12, verticalalignment='bottom', horizontalalignment='right') # Thêm nhãn 'D' kế bên giao điểm của Line5 và Line3 plt.text(X0 + 0.16, line4_y[0]+0.02, 'D', fontsize=12, verticalalignment='bottom', horizontalalignment='right') X0 -= 1 import matplotlib.pyplot as plt # Tạo dữ liệu cho các đoạn thẳng x_values = [1, 2, 3, 4, 5] y_values_line1 = [1] * len(x_values) # Đường thẳng thứ nhất nằm ở y=1 y_values_line2 = [2] * len(x_values) # Đường thẳng thứ hai nằm ở y=2 # Giả sử điều chỉnh độ dài của các đường thẳng đi 0.5 đơn vị y_values_line3 = [1.25] * (len(x_values) - 1) # Đường thẳng thứ nhất ngắn hơn 1 đơn vị y_values_line4 = [1.75] * (len(x_values) - 1) # Đường thẳng thứ hai ngắn hơn 1 đơn vị # Cắt bớt 2 điểm từ đầu bên trái của các đường thẳng cut_points = 1 x_values_cut = x_values[cut_points:] y_values_line3_cut = y_values_line3[cut_points:] y_values_line4_cut = y_values_line4[cut_points:] # Vẽ các đoạn thẳng plt.plot(x_values, y_values_line1) plt.plot(x_values, y_values_line2) plt.plot(x_values_cut[:-1], y_values_line3_cut) # Bỏ điểm cuối cùng của đường thẳng thứ nhất để giảm độ dài plt.plot(x_values_cut[:-1], y_values_line4_cut) # Bỏ điểm cuối cùng của đường thẳng thứ hai để giảm độ dài # Thêm nhãn "GND" trên Line1 plt.text(x_values[-1] + 0.1, y_values_line1[-1], 'GND', fontsize=12, verticalalignment='bottom') # distance_from_line1 = 0.1 # Thêm nhãn "VCC" kế bên Line2 plt.text(x_values[-1] + 0.1, y_values_line2[-1], 'VCC', fontsize=12, verticalalignment='bottom') # distance_from_line2 = 0.1 # Thêm nhãn "p diffusion" kế bên Line3 plt.text(x_values_cut[-1], y_values_line3_cut[-1], 'n diffusion', fontsize=12, verticalalignment='bottom', horizontalalignment='right') # Thêm nhãn "n diffusion" kế bên Line4 plt.text(x_values_cut[-1], y_values_line4_cut[-1], 'p diffusion', fontsize=12, verticalalignment='bottom', horizontalalignment='right') # Tính toán trung điểm của line3 và line4 x_midpoint = (x_values_cut[-1] + x_values_cut[0]) / 2 y_midpoint = (y_values_line3_cut[-1] + y_values_line4_cut[-1]) / 2 # Gán trung điểm cho các điểm bắt đầu và kết thúc của đường thẳng line5 x_start = x_midpoint x_end = x_midpoint y_start = min(y_values_line3_cut + y_values_line4_cut) - 0.1 # Độ dài mở rộng 0.5 đơn vị y_end = max(y_values_line3_cut + y_values_line4_cut) + 0.1 # Độ dài mở rộng 0.5 đơn vị # Vẽ các đoạn thẳng plt.plot(x_values, y_values_line1) plt.plot(x_values, y_values_line2) plt.plot(x_values_cut[:-1], y_values_line3_cut) # Bỏ điểm cuối cùng của đường thẳng thứ nhất để giảm độ dài plt.plot(x_values_cut[:-1], y_values_line4_cut) # Bỏ điểm cuối cùng của đường thẳng thứ hai để giảm độ dài # Tính toán tọa độ giao điểm của line5 và line3 x_intersection = x_midpoint y_intersection = (y_values_line3_cut[-1] + y_start) / 2 # Lấy trung điểm y giữa điểm cuối cùng của line3 và y_start của line5 plt.axis('off') Vertical_line(["A", "B"], x_values_cut[0], x_values_cut[-1], y_values_line3_cut, y_values_line4, y_start, y_end) plt.show()
Editor is loading...
Leave a Comment