Bagaimana cara memplot data mendekati nol di pgfplots log plot?

Sep 04 2020

Saya mencoba membuat plot log dari beberapa data menggunakan pgfplots. Saya sebagian besar telah melihatnya seperti yang saya inginkan, tetapi saya ingin plot untuk menunjukkan data yang berlanjut ke arah asal daripada berhenti di titik x=0.05data.

Saya sudah mencoba menambahkan extra ytickuntuk 0, dan itu sangat merusak tampilan, seperti yang diharapkan. Saya juga mencoba menambahkan titik data "palsu" (yang dapat saya hapus titik (?)) Di sekitar tempat yang tepat di plot, tetapi ini membosankan, rawan kesalahan, dan [terus terang] tidak jujur.

Saya telah membuat langkah besar dengan LaTeX melalui pencarian internet. Namun, dalam hal ini google-fu saya mengecewakan saya.

Bagaimana cara agar plot diperluas ke asalnya (sementara asalnya tetap "di luar layar")? Untuk lebih jelasnya, saya ingin x / y windowing tetap seperti itu - saya hanya ingin plot terus ke tepi daripada berhenti di titik x=0.05data.

Kode ini mungkin berantakan, jadi saya mohon maaf sebelumnya atas apa pun di sini yang dilakukan dengan cara yang mengerikan.

\begin {figure}[H]
\centering
\begin{tikzpicture}
    \begin{axis}[
        xlabel={$v_D$ (\si{\volt})},
        ylabel={$i_D$ (\si{\ampere})},
        ytick={0.00000001, 0.0000001, 0.000001, 0.00001, 0.0001, 0.001},
        yticklabels={$\SI{10}{\nano\ampere}$, $\SI{100}{\nano\ampere}$, $\SI{1}{\micro\ampere}$, $\SI{10}{\micro\ampere}$, $\SI{100}{\micro\ampere}$, $\SI{1}{\milli\ampere}$},
        ymode=log,
        ymajorgrids=true,
        legend pos=outer north east,
    ]

        \addplot table{
-1.000  -1.429E-08
0   0.000E+00
0.05    2.343E-08
0.10    8.547E-08
0.15    2.497E-07
0.20    6.842E-07
0.25    1.831E-06
0.30    4.843E-06
0.35    1.265E-05
0.40    3.227E-05
0.45    7.824E-05
0.50    1.726E-04
0.55    3.340E-04
0.60    5.646E-04
0.65    8.532E-04
0.70    1.210E-03
        };
        \addlegendentry{$i_D$}

        % diagonal extension line
        \addplot[mark=none, black, dotted, line width = 1] coordinates {
            (0, 2E-08) (0.45,7.824E-05)
        };
    \end{axis}
\end{tikzpicture}
\caption{Finding $I_S$}
\label{fig:3_is}
\end {figure}

Jawaban

1 Rmano Sep 04 2020 at 15:32

Saya tidak punya waktu sekarang untuk menurunkan parameter persamaan dioda 😏, tapi bagaimana dengan ini?

Anda hanya mengganti nilai saat ini yang benar untuk titik di $V_D=\SI{0.01}{V}$ (btw, $v_{\scriptscriptstyle D}$ terlihat lebih baik ;-), saya bahkan memiliki makro untuk itu).

Kemudian Anda secara manual memperbaiki range ( xmin=0, xmax=0.6, enlarge x limits, ymin=1e-8, ymax=4e-3) dan plot (saya menambahkan smoothtetapi itu masalah selera).

Kuncinya enlarge x limitsdigunakan untuk memiliki efek yang sama seperti sumbu x "diperluas" yang Anda miliki.

Bagian dari grafik yang keluar secara otomatis dipotong (lihat deskripsi kunci clip mode).

Jelas, Anda dapat melakukan hal yang sama di sisi lain (tambahkan satu nilai untuk 0,9 V, misalnya).

\documentclass[border=10pt]{standalone}
\usepackage{tikz, siunitx}
\usepackage{pgfplots}\pgfplotsset{compat=1.13}
\begin{document}
\begin{tikzpicture}
    \begin{axis}[
        xmin=0, xmax=0.7, enlarge x limits,
        ymin=1e-8, ymax=4e-3,
        xlabel={$v_D$ (\si{\volt})},
        ylabel={$i_D$ (\si{\ampere})},
        ytick={0.00000001, 0.0000001, 0.000001, 0.00001, 0.0001, 0.001},
        yticklabels={$\SI{10}{\nano\ampere}$, $\SI{100}{\nano\ampere}$, $\SI{1}{\micro\ampere}$, $\SI{10}{\micro\ampere}$, $\SI{100}{\micro\ampere}$, $\SI{1}{\milli\ampere}$},
        ymode=log,
        ymajorgrids=true,
        legend pos=outer north east,
        ]
        % first point added semi-"randomly", substitute the correct value
        \addplot+[smooth] table{
                0.01    4.0E-09
                0.05    2.343E-08
                0.10    8.547E-08
                0.15    2.497E-07
                0.20    6.842E-07
                0.25    1.831E-06
                0.30    4.843E-06
                0.35    1.265E-05
                0.40    3.227E-05
                0.45    7.824E-05
                0.50    1.726E-04
                0.55    3.340E-04
                0.60    5.646E-04
                0.65    8.532E-04
                0.70    1.210E-03
            };
        \addlegendentry{$i_D$}

            % diagonal extension line
            % just to show that you can use TikZ normal drawing commands here
            \draw[mark=none, black, dotted, line width = 1] 
                    (0, 2E-08) -- (0.45,7.824E-05);
        \end{axis}
    \end{tikzpicture}
\end{document}