Рисунок Circuitikz и Pgfplots с перекрытием

Рисунок Circuitikz и Pgfplots с перекрытием

Моя задача сегодня — втиснуть электрическую схему (нарисованную в основном с использованием \draw) в Tikz Axis.

Я использую команду Axis для построения (с помощью \addplot) кривой по набору точек (пока проблем не возникло), но не могу понять, как Tikzpicture работает с якорями и всем таким, чтобы все не сходило с ума, а оставалось на месте.

Чтобы было понятнее, вот код, в котором я создаю 3 оси (или 3 подфигуры, если хотите, 2 сверху и одна снизу слева):

\begin{tikzpicture}[scale=1]
% Vs(ve) graphique

  \begin{axis}[name=plot1
    ]
    \addplot[black] table {Fig_ELA2/ELA2_P3_C3/ELA2_P3_C1_PP_CLASSE_B/courbes/vs_ve_out.txt};
  \end{axis}
  
% Vs(wt) graphique
  \begin{axis}[name=plot2,at={($(plot1.east)+(1.5cm,0)$)},anchor=west
    ]
    \addplot[black] table {Fig_ELA2/ELA2_P3_C3/ELA2_P3_C1_PP_CLASSE_B/courbes/vs_t_out.txt};
  \end{axis}
  
% Ve(wt) graphique
  \begin{axis}[name=plot3,at={($(plot1.south)-(0,1.5cm)$)},anchor=north
    ]
    \addplot[black] table {Fig_ELA2/ELA2_P3_C3/ELA2_P3_C1_PP_CLASSE_B/courbes/ve_t_out.txt};
  \end{axis}

% Electrical circuit
  \draw
    (0,0) node[njfet](J){$J$}
    (J.S) to[short,-o] ++(0,-0.1) node[left](S){\tiny S} to [R, l_=$R_S$,-*] (0,-3) node(gnd_rs)[ground]{}
    (J.D) to[short,-o] ++(0,0.3) node[left](D){\tiny D} to [R, l=$R_D$] ++(0,2) node[vcc]{\color{green} $V_{CC}$}
    (J.G) to[short,-o] ++(-0.1,0) node[above](G){\tiny G}-- ++(-1,0) node(RG){}
    ;
    \coordinate (gnd_rg) at (RG|-gnd_rs);
    \draw (RG) to [R, l_=$R_G$,-*] (gnd_rg);
    \draw (gnd_rs) to[short,-o] ++(-4,0) node(gnd_ve){};
    \draw (gnd_rs) to[short,-*] ++(1,0) node(gnd_cs){} to[short,-o] ++(2,0) node(gnd_vs){};
    \coordinate (ve) at (gnd_ve|-J.G);
    \draw (ve) to[C,l=$C_{Le}$,o-*] (RG);
    \coordinate (vs) at (gnd_vs|-D);
    \draw (D) to[C,l=$C_{Ls}$,-o] (vs);
    \coordinate (cs) at (S-|gnd_cs);
    \draw (S) -- (cs) to[C,l=$C_S$,] (gnd_cs);
    \draw[-triangle 45, red] (gnd_vs) -- (vs) node[right,pos=0.5]{$v_s(t)$};
    \draw[-triangle 45, red] (gnd_ve) -- (ve) node[left,pos=0.5]{$v_e(t)$};
\end{tikzpicture}
    

Извините, что не даю вам кривых для тестирования, я полагаю, вы можете просто сделать глупые кривые (или вообще не использовать addplot).

Так есть ли способ каким-то образом сделать электрическую цепь абсолютной и заставить ее вести себя как абсолютная в CSS (то есть вне потока)?

Спасибо за помощь !

решение1

Вы всегда должны стараться размещать самодостаточные примеры, чтобы люди, желающие помочь, могли сделать это, не угадывая вашу преамбулу или определения. Тем не менее, это вариант --- обратите внимание, что:

  1. в вашей схеме есть только одна абсолютная координата, (0,-3)в первой строке, которую я исправил (и сделал вашу схему не подлежащей преобразованию).
  2. Но даже в этом случае схема довольно большая, поэтому я масштабировал ее с учетом scopeокружения.

Итак, вы можете сделать что-то вроде этого (регулировка вручную ++(6,-5); можно сделать и что-то более автоматическое, но это уже другая история, и мы расскажем о ней в другой раз...)

\documentclass[border=10pt]{standalone}
\usepackage[siunitx, RPvoltages]{circuitikz}
\usepackage{pgfplots}\pgfplotsset{compat=newest}
\begin{document}

\begin{tikzpicture}[scale=1]
    % Vs(ve) graphique

    \begin{axis}[name=plot1
        ]
        \addplot[black] {sin(x)};
    \end{axis}

    % Vs(wt) graphique
    \begin{axis}[name=plot2,at={($(plot1.east)+(1.5cm,0)$)},anchor=west
        ]
        \addplot[black] {cos(x)};
    \end{axis}

    % Ve(wt) graphique
    \begin{axis}[name=plot3,at={($(plot1.south)-(0,1.5cm)$)},anchor=north
        ]
        \addplot[black] {x};
    \end{axis}

    % Electrical circuit
    \begin{scope}[scale=0.8, transform shape]
        \draw
            (plot1.south east) ++(6,-5) node[njfet](J){$J$}
            (J.S) to[short,-o] ++(0,-0.1) node[left](S){\tiny S} to [R, l_=$R_S$,-*] ++(0,-3) node(gnd_rs)[ground]{}
            (J.D) to[short,-o] ++(0,0.3) node[left](D){\tiny D} to [R, l=$R_D$] ++(0,2) node[vcc]{\color{green} $V_{CC}$}
            (J.G) to[short,-o] ++(-0.1,0) node[above](G){\tiny G}-- ++(-1,0) node(RG){}
            ;
        \coordinate (gnd_rg) at (RG|-gnd_rs);
        \draw (RG) to [R, l_=$R_G$,-*] (gnd_rg);
        \draw (gnd_rs) to[short,-o] ++(-4,0) node(gnd_ve){};
        \draw (gnd_rs) to[short,-*] ++(1,0) node(gnd_cs){} to[short,-o] ++(2,0) node(gnd_vs){};
        \coordinate (ve) at (gnd_ve|-J.G);
        \draw (ve) to[C,l=$C_{Le}$,o-*] (RG);
        \coordinate (vs) at (gnd_vs|-D);
        \draw (D) to[C,l=$C_{Ls}$,-o] (vs);
        \coordinate (cs) at (S-|gnd_cs);
        \draw (S) -- (cs) to[C,l=$C_S$,] (gnd_cs);
        \draw[->, red] (gnd_vs) -- (vs) node[right,pos=0.5]{$v_s(t)$};
        \draw[->, red] (gnd_ve) -- (ve) node[left,pos=0.5]{$v_e(t)$};
    \end{scope}
\end{tikzpicture}

\end{document}

картинка из кода выше

Связанный контент