CircuiTikZ поверх изображения png

CircuiTikZ поверх изображения png

Я хочу нарисовать простые символы CircuiTikZ поверх изображения .png. Вот что я хочу:

в розыске

Вот что я сейчас получаю:

результат

Вот мой код:

\begin{figure} [!ht]
\begin{tikzpicture}[x=1cm,y=1cm]
\node at (0,0) {\includegraphics[trim={40cm 55cm 40cm 55cm},clip,height=10cm]{images/MecanismoEscala_primer_ensayo_Variables.png}};
\node at (-3.7634,-1.5117){
\begin{circuitikz}
\draw
 (0,0) --++ (-1.0778,0)
        to [open,v=$v$,o-o] ++(0,0.7012)
        to[short,i=$i_{a}$] ++(1.0663,0);
\end{circuitikz}
};
\end{tikzpicture}
\end{figure}\FloatBarrier

Я бы также хотел написать $v$знаки «+» и «-» рядом с клеммами (разместив эти два знака немного дальше друг от друга, а не так, как я получаю в результате).

решение1

Прежде всего.Никогдагнездо tikzpictures! И выкладываю базовую картинку, которую в данном случае мне удалось состряпать с помощью GIMP и сохранить как uffa.png.

введите описание изображения здесь

Мой подход был бы таким:

  1. загрузите изображение как узел в начале tikzpicture, чтобы затем можно было писать поверх него.
  2. Создайте своего рода сетку, чтобы иметь возможность легко ориентироваться.
  3. Нарисуйте все, что хотите, точно настройте координаты.
  4. Снимите сетку.

Давайте посмотрим: шаги 1 и 2 будут примерно такими:

\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
    \node[anchor=south west,inner sep=0] (image) at (0,0) {%
        \includegraphics[width=10cm]{uffa.png}};
        \draw[red,thin] (0,0) grid[step=1] (10,5);
\end{tikzpicture}
\end{document}

картинка с сеткой

У вас есть 0,0нижняя левая точка, и каждый шаг сетки составляет 1 см. Теперь, фон не белый (надеюсь, вы его не распечатаете, в противном случае измените его), поэтому я выбрал цвет, который получился довольно темным сине-серым с RGB на 33,40,48 (подойдет любая палитра цветов).

Теперь я рисую схему, устанавливая сине-серый цвет в качестве заливки для открытых полюсов.

\documentclass[tikz]{standalone}
\usepackage[RPvoltages, american]{circuitikz}
\begin{document}
\begin{tikzpicture}[color=white]% write in white
    \node[anchor=south west,inner sep=0] (image) at (0,0) {%
        \includegraphics[width=10cm]{uffa.png}};
        \draw[red,thin] (0,0) grid[step=1] (10,5);
        \definecolor{mybg}{RGB}{33,40,48}% with a color picker
        \ctikzset{open poles fill=mybg}% tell circuitikz what is background for you
        \draw (4,4) coordinate(a) to[short, i=$i_a$, o-]  ++(1.8,0);
        \draw (a) ++(0,-1) to[short, o-] ++(1.7,0);
        \draw (a) ++(-0.3,0) to[open, v=$v$] ++(0,-1);
\end{tikzpicture}
\end{document}

с сеткой и цепью

Я старался использовать относительные и именованные координаты, где это возможно, чтобы минимизировать количество чисел, которые нужно подправить для получения результата. Затем вы удаляете сетку, и у вас будет:

окончательный результат

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