Пакет TiKz: Как заменить точки числами в карте диапазона области функций

Пакет TiKz: Как заменить точки числами в карте диапазона области функций

Я пытаюсь понять, как заменить точки в кругах числовыми значениями (1, 2, 3 и т. д.)

Пожалуйста, помогите мне определить, какие строки кода мне необходимо отредактировать, чтобы выполнить эту замену.

Заранее спасибо!

mwe (ч/т пекусс)

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric,fit}
\begin{document}
\begin{tikzpicture}
%put some nodes on the left
\foreach \x in {1,2,3}{
\node[fill,circle,inner sep=2pt] (d\x) at (0,\x) {};
}
\node[fit=(d1) (d2) (d3),ellipse,draw,minimum width=1cm] {}; 
%put some nodes on the center
\foreach \x[count=\xi] in {0.5,1.5,...,4}{
\node[fill,circle,inner sep=2pt] (r\xi) at (2,\x) {};
}
\node[fit=(r1) (r2) (r3) (r4),ellipse,draw,minimum width=1.5cm] {}; 
%put some nodes on the right
\foreach \x[count=\xi] in {0.75,1.5,...,3}{
\node[fill,circle,inner sep=2pt] (c\xi) at (4,\x) {};
}
\node[fit=(c1) (c2) (c3) (c4) ,ellipse,draw,minimum width=1.5cm] {};
\draw[-latex] (d1) -- (r2);
\draw[-latex] (d2) -- (r2);
\draw[-latex] (d3) -- (r4);
\draw[-latex] (r1) -- (c2);
\draw[-latex] (r2) -- (c3);
\draw[-latex] (d3) -- (r4);
\end{tikzpicture}
\end{document}

решение1

Я не знаю, какие числа вы хотели бы разместить, но в целом содержимое узла следует размещать между фигурными скобками: \node[options] (name) at (0,0) {... };.

В вашем примере вы можете захотеть поместить в узлы числа из \foreachцикла, которые хранятся в макросе \x. Поскольку узлы залиты черным, текст внутри не будет виден. Поэтому я бы предложил вам изменить цвет заливки, например, с помощью fill=lightgray. Таким образом, вы можете написать что-то вроде: \node[fill=lightgray,circle,inner sep=2pt] (d\x) at (0,\x) {\x};.

Если вы сделаете это для всех трех наборов узлов, вы обнаружите, что содержимое узлов имеет разную длину, и поэтому круги будут иметь разный размер. Например, некоторые узлы содержат только одну цифру, а другие содержат три и точку в качестве десятичного разделителя. Вероятно, вы захотите добавить опцию minimum width=2.5em(или подобную) к узлам, чтобы получить одинаковый размер для всех узлов.

Наконец, поскольку узлы могут перекрываться из-за увеличенного размера, вы можете установить опцию y=1.25cmдля всего узла tikzpicture, которая увеличит вертикальные расстояния, сохранив при этом горизонтальные расстояния такими, какие они есть.

Если собрать все вместе, то получится:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric,fit}

\begin{document}
\begin{tikzpicture}[y=1.25cm]
%put some nodes on the left
\foreach \x in {1,2,3}{
    \node[fill=lightgray,circle,inner sep=2pt,minimum width=2.5em] (d\x) at (0,\x) {\x};
}
\node[fit=(d1) (d2) (d3),ellipse,draw,minimum width=1cm] {}; 

%put some nodes on the center
\foreach \x[count=\xi] in {0.5,1.5,...,3.5}{
    \node[fill=lightgray,circle,inner sep=2pt,minimum width=2.5em] (r\xi) at (2,\x) {\x};
}
\node[fit=(r1) (r2) (r3) (r4),ellipse,draw,minimum width=1.5cm] {}; 

%put some nodes on the right
\foreach \x[count=\xi] in {0.75,1.5,...,3}{
    \node[fill=lightgray,circle,inner sep=2pt,minimum width=2.5em] (c\xi) at (4,\x) {\x};
}
\node[fit=(c1) (c2) (c3) (c4),ellipse,draw,minimum width=1.5cm] {};

\draw[-latex] (d1) -- (r2);
\draw[-latex] (d2) -- (r2);
\draw[-latex] (d3) -- (r4);
\draw[-latex] (r1) -- (c2);
\draw[-latex] (r2) -- (c3);
\draw[-latex] (d3) -- (r4);
\end{tikzpicture}
\end{document}

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


Если вам не нужен фон за числами, вы, вероятно, можете вообще удалить опции для узлов (также вам не нужно будет устанавливать y=1.25cm). Вы можете захотеть добавить немного цвета (похожего на картинку, которую вы предоставили в своем комментарии), поэтому я добавил немного цвета левому овалу и одной из стрелок:

\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric,fit}

\begin{document}
\begin{tikzpicture}
%put some nodes on the left
\foreach \x in {1,2,3}{
    \node (d\x) at (0,\x) {\x};
}
\node[fit=(d1) (d2) (d3),ellipse,draw=blue,minimum width=1cm] {}; 

%put some nodes on the center
\foreach \x[count=\xi] in {0.5,1.5,...,3.5}{
    \node (r\xi) at (2,\x) {\x};
}
\node[fit=(r1) (r2) (r3) (r4),ellipse,draw,minimum width=1.5cm] {}; 

%put some nodes on the right
\foreach \x[count=\xi] in {0.75,1.5,...,3}{
    \node (c\xi) at (4,\x) {\x};
}
\node[fit=(c1) (c2) (c3) (c4),ellipse,draw,minimum width=1.5cm] {};

\draw[-latex,orange] (d1) -- (r2);
\draw[-latex] (d2) -- (r2);
\draw[-latex] (d3) -- (r4);
\draw[-latex] (r1) -- (c2);
\draw[-latex] (r2) -- (c3);
\draw[-latex] (d3) -- (r4);
\end{tikzpicture}
\end{document}

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

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