我想在下面标记的矩形中写一个 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}