如何在 tikz 网格内书写

如何在 tikz 网格内书写

我想在下面标记的矩形中写一个 a。我猜解决方案以某种方式使用了节点,但直到现在我都无法弄清楚。提前致谢!

在此处输入图片描述

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing}
\begin{document}
\begin{tikzpicture}[scale=.35]\footnotesize
 \pgfmathsetmacro{\xone}{0}
 \pgfmathsetmacro{\xtwo}{20}
 \pgfmathsetmacro{\yone}{0}
 \pgfmathsetmacro{\ytwo}{5}

\begin{scope}<+->;
% grid
  \draw[step=1cm,gray,very thin] (\xone,\yone) grid (\xtwo,\ytwo);

% ticks
  \foreach \x/\xtext in { 5/q_1, 6/q_2, 7/q_3, 8/q_4, 9/q_5, 10/q_6} % xKoordinate / Beschriftung
  \draw[gray,xshift=\x cm] (0,-.3) -- (0,0) node[below] {$\xtext$};

\end{scope}

% function
\begin{scope}[thick,red]
\filldraw[thin,red,opacity=.3] (0,0) rectangle (6,1);
\filldraw[thin,red,opacity=.3] (0,1) rectangle (10,2);
\filldraw[thin,blue,opacity=.3] (0,2) rectangle (3,3);
\filldraw[thin,blue,opacity=.3] (0,3) rectangle (5,4);
\filldraw[thin,blue,opacity=.3] (0,4) rectangle (4,5);
\draw[thick, black] (5,0) -- (5,5);
\draw [decorate,decoration={brace,amplitude=5pt},xshift=-4pt,yshift=0pt]
(0,2) -- (0,5) node [black,midway,xshift=-0.6cm] 
{\footnotesize $\bar{x}$};
\draw [decorate,decoration={brace,amplitude=5pt},xshift=-4pt,yshift=0pt] %Amplitude für wie weit nach rechts gezogen
(0,0) -- (0,2) node [black,midway,xshift=-0.6cm] 
{\footnotesize $\bar{y}$};


\end{scope}
\end{tikzpicture}
\end{document} 

答案1

由于您已经创建了一个步长为 1 的网格,因此一个“快速而肮脏”的解决方案是在您想要文本的精确坐标处定位一个节点,在本例中如果我没算错的话就是 (7.5,1.5)。

您唯一需要添加到代码中的是:

\begin{scope}[color=black]
    \node[anchor = center] () at (7.5,1.5){a};
\end{scope}

在最后。我将其放在一个范围内,以防您想更改颜色,但据我所知,这不是必需的,因为黑色是默认颜色。代码将以以下方式结束:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing}
\begin{document}
\begin{tikzpicture}[scale=.35]\footnotesize
 \pgfmathsetmacro{\xone}{0}
 \pgfmathsetmacro{\xtwo}{20}
 \pgfmathsetmacro{\yone}{0}
 \pgfmathsetmacro{\ytwo}{5}

\begin{scope}<+->;
% grid
  \draw[step=1cm,gray,very thin] (\xone,\yone) grid (\xtwo,\ytwo);

% ticks
  \foreach \x/\xtext in { 5/q_1, 6/q_2, 7/q_3, 8/q_4, 9/q_5, 10/q_6} % xKoordinate / Beschriftung
  \draw[gray,xshift=\x cm] (0,-.3) -- (0,0) node[below] {$\xtext$};

\end{scope}

% function
\begin{scope}[thick,red]
\filldraw[thin,red,opacity=.3] (0,0) rectangle (6,1);
\filldraw[thin,red,opacity=.3] (0,1) rectangle (10,2);
\filldraw[thin,blue,opacity=.3] (0,2) rectangle (3,3);
\filldraw[thin,blue,opacity=.3] (0,3) rectangle (5,4);
\filldraw[thin,blue,opacity=.3] (0,4) rectangle (4,5);
\draw[thick, black] (5,0) -- (5,5);
\draw [decorate,decoration={brace,amplitude=5pt},xshift=-4pt,yshift=0pt]
(0,2) -- (0,5) node [black,midway,xshift=-0.6cm] 
{\footnotesize $\bar{x}$};
\draw [decorate,decoration={brace,amplitude=5pt},xshift=-4pt,yshift=0pt] %Amplitude für wie weit nach rechts gezogen
(0,0) -- (0,2) node [black,midway,xshift=-0.6cm] 
{\footnotesize $\bar{y}$};
\node () at (7.5,1.5){a};
\end{scope}

%- Node!
\begin{scope}[color=black]
    \node[anchor = center] () at (7.5,1.5){a};
\end{scope}

\end{tikzpicture}
\end{document} 

在此处输入图片描述

编辑:我数得不太清楚,因为“a”从它应该在的位置移开了。另一个解决方案是为你的刻度添加具体名称,在它们之间添加一个节点并 y 移它(最后一部分需要重新设计,我不确定怎么做)。从更改以下几行开始:

1-使用 calc 库 \usetikzlibrary{decorations.pathreplacing,calc}

2-“命名”每个节点,以便之后您可以使用其坐标

  \foreach \x/\xtext in { 5/q_1, 6/q_2, 7/q_3, 8/q_4, 9/q_5, 10/q_6} % xKoordinate / Beschriftung
  \draw[gray,xshift=\x cm] (0,-.3) -- (0,0) node[below] (\xtext) {$\xtext$};

3- 在 q2 和 q3 之间放置一个节点并(手动 D:)将其移动到 Y 轴上的所需位置

\begin{scope}[color=black]
    \node[yshift=0.7cm] () at ($(q_2)!0.5!(q_3)$) {a};
\end{scope}

相关内容