import numpy as np import matplotlib.pyplot as plt # --- Wczytanie danych z plików tekstowych --- uds_const_a = np.loadtxt("uds_const_a.txt") uds_const_b = np.loadtxt("uds_const_b.txt") ugs_const_a = np.loadtxt("ugs_const_2V.txt") # --- Ustawienia rozmiaru figury (Matplotlib używa cali) --- CM_TO_IN = 1 / 2.54 fig_width_in = 15 * CM_TO_IN fig_height_in = 7 * CM_TO_IN # --- Utworzenie figury z dwoma panelami obok siebie --- fig, axs = plt.subplots(1, 2, figsize=(fig_width_in, fig_height_in), sharey=True, constrained_layout=True) # ============================================================ # LEWY WYKRES # ============================================================ ax = axs[0] # Dane dla dwóch wartości U_DS z dodanymi errorbarami ax.errorbar(uds_const_b[:, 0], uds_const_b[:, 1], yerr=0.4, marker='d', color='red', lw=1.0, ms=3, elinewidth=1.0, capsize=2, label=r"$U_{DS} = 5.0$ V") ax.errorbar(uds_const_a[:, 0], uds_const_a[:, 1], yerr=0.4, marker='o', color='blue', lw=1.0, ms=3, elinewidth=1.0, capsize=2, label=r"$U_{DS} = 2.0$ V") # Linie odniesienia i_drain = 5.75 ax.axvline(0.0, color='k', linestyle='--', linewidth=1.0) ax.axvline(-2.0, color='k', linestyle=':', linewidth=1.0) ax.axhline(i_drain, color='k', linestyle=':', linewidth=1.0) # Opisy osi i wygląd ax.set_xlabel(r"$U_{GS}$ (V)", fontsize=9) ax.set_ylabel(r"$I_{D}$ (mA)", fontsize=9) ax.tick_params(axis='both', labelsize=8) # Legenda ax.legend(fontsize=10) # Zakres osi ax.set_xlim(-5.5, 0.5) ax.set_ylim(0.0, 15) # ============================================================ # PRAWY WYKRES # ============================================================ ax = axs[1] # Charakterystyka I_D(U_DS) dla stałego U_GS ax.errorbar(ugs_const_a[:, 0], ugs_const_a[:, 1], yerr=0.4, marker='d', color='black', lw=1.0, ms=3, elinewidth=1.0, capsize=2, label=r"$U_{GS} = 2.0$ V") # Linie odniesienia ax.axvline(5.0, color='k', linestyle=':', linewidth=1.0) ax.axhline(i_drain, color='k', linestyle=':', linewidth=1.0) # Opis osi ax.set_xlabel(r"$U_{DS}$ (V)", fontsize=9) ax.tick_params(axis='both', labelsize=8) # Legenda ax.legend(fontsize=10) # Zakres osi ax.set_xlim(0.0, 15) # ax.set_ylim(-1, 15) # --- Zapis do pliku --- plt.savefig('tranzystor_njfet_2.svg', bbox_inches='tight') plt.savefig('tranzystor_njfet_2.png', dpi=300, bbox_inches='tight') # --- Podgląd --- plt.show()