Como plotar dados próximos de zero no gráfico de log pgfplots?
Estou tentando gerar um gráfico de log de alguns dados usando pgfplots. A maior parte do tempo está com a aparência que desejo, mas gostaria que o gráfico mostrasse os dados continuando em direção à origem, em vez de parar no ponto de dados x=0.05.
Eu tentei adicionar um extra ytickpara 0, e isso distorce terrivelmente a aparência das coisas, como esperado. Eu também tentei adicionar um ponto de dados "falso" (do qual eu poderia remover o ponto (?)) Aproximadamente no lugar certo da trama, mas isso é entediante, sujeito a erros e [francamente] desonesto.
Fiz grandes avanços com o LaTeX por meio de pesquisas na Internet. No entanto, neste caso, meu google-fu me falha.
Como posso fazer com que o gráfico se estenda em direção à origem (enquanto a origem permanece "fora da tela")? Para ser claro, gostaria que a janela x / y permanecesse como está - quero apenas que o gráfico continue até a borda, em vez de parar no ponto de dados x=0.05.
Este código provavelmente é uma bagunça, então peço desculpas antecipadamente por qualquer coisa aqui que seja feita de uma maneira terrível.
\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}
Respostas
Não tenho tempo agora para derivar os parâmetros da equação do diodo 😏, mas e quanto a isso?
Você acabou de substituir o valor atual correto para o ponto em $V_D=\SI{0.01}{V}$ (por falar nisso, $v_{\scriptscriptstyle D}$ parece melhor ;-), até tenho uma macro para isso).
Em seguida, você corrige manualmente o intervalo ( xmin=0, xmax=0.6, enlarge x limits, ymin=1e-8, ymax=4e-3) e o gráfico (eu adicionei, smoothmas isso é uma questão de gosto).
A chave enlarge x limitsé usada para ter o mesmo efeito que o eixo x "expandido" que você tem.
A parte externa do gráfico é recortada automaticamente (veja a descrição da chave clip mode).
Obviamente, você pode fazer o mesmo do outro lado (adicione um valor para 0,9 V, por exemplo).
\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}