如何创建带有注释的轴?

如何创建带有注释的轴?

我想要获取带注释的横轴,如附图所示。哪种包最适合完成这样的任务?我想要获得什么

答案1

以下是包含简单\put命令的启动器:

\documentclass{article}
\unitlength=1cm
\begin{document}

\begin{picture}(6,3)(-0.5,-1.5)
\put(0,0){\vector(1,0){5}}\put(5.1,-0.2){$x$}
\multiput(0,0)(1,0){5}{\line(0,1){0.3}}
\put(-0.2,-0.3){\tabular[t]{c}a\\b\\c\endtabular}
\put(0.75,-0.3){\tabular[t]{c}d\\e\\f\endtabular}
\put(1.8,-0.3){\tabular[t]{c}g\\h\\i\endtabular}
\put(2.8,-0.3){\tabular[t]{c}j\\k\\l\endtabular}
\put(3.7,-0.3){\tabular[t]{c}m\\n\\o\endtabular}
\end{picture}

\end{document} 

在此处输入图片描述

答案2

使用 TiZ 可能是最好的方法。这是针对您的请求的示例解决方案。我确实注释掉了代码以使其更容易理解。 示例输出

\documentclass[tikz]{standalone}
\begin{document}
    \begin{tikzpicture}
        % Horizontal line
        \draw[->] (0,0) -- (4.5,0)node[xshift = 0.25cm]{$x$};
        \def\ourInfo{{
            {"a", "d", "g", "j", "m"},  % Row 0
            {"b", "e", "h", "k", "n"},  % Row 1
            {"c", "f", "i", "l", "o"}   % Row 2
        }}
        % getting information from the 2D array
        \foreach \i in {0,...,2}{%rows
            \foreach \j in {0, ..., 4}{%columns
                % The \pgfmathparse gets what is inside the cell at (i,j).
                % \pgfmathresult will output the result obtained previously.
                \draw[] (\j,-0.5-\i/2)node[]{\pgfmathparse{\ourInfo[\i][\j]}\pgfmathresult};
            }
        }
        % Taking care of the numbers above the horizontal line.
        \foreach \i in {0, ..., 4}{
            \draw(\i,0) -- (\i,0.25)node[yshift = 0.25cm]{\i};
        }
        % Define a 1D array and use a foreach loop to place what it has.
        \def\innerData{{"", "abc", "xyz", "uvw"}}
        \foreach \i in {0, ..., 3}{
            \draw(\i+0.5,0) node[yshift = 0.5cm]{\pgfmathparse{\innerData[\i]}\small\pgfmathresult};
        }
    \end{tikzpicture}
\end{document}

答案3

我推荐 TiZ 因为它可以改变外观的各个方面(箭头、线宽、线条样式、颜色、不透明度),并且具有\foreach有助于避免重复的循环,并可与所有标准编译器一起使用。

\documentclass[tikz,border=3.14mm]{standalone} 
\newcounter{pft}
\begin{document}
\begin{tikzpicture}
 \draw[-stealth] (0,0) -- (5,0);
 \draw foreach \X in {0,...,4} {(\X,0) -- ++ (0,0.2) node[above]{\X} };
 \foreach \X in {0,...,14}
 {\stepcounter{pft}
 \node at ({int(\X/3)},{-0.45*(1+mod(\X,3))}) {\alph{pft}};}
 \foreach \X [count=\Z] in {abc,xyz,uvw}
 {\node[text depth=0.5ex] at (1.5+\Z,0.45){\X};}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容