在技​​能栏上添加文字

在技​​能栏上添加文字

我想在技能栏中添加文本(居中或右对齐),定义如下:

\definecolor{bar100}{RGB}{230,230,250}
\definecolor{bar}{RGB}{147,112,219}
\begin{tikzpicture}
    \fill [bar100] (0,0) rectangle (4,.2);
    \fill [bar] (0,0) rectangle (3.2,.2);
\end{tikzpicture}

我发现可以使用

node[pos=1]{8/10}

但是当我尝试这样的事情时:

\begin{tikzpicture}
    \fill [bar100] (0,0) rectangle (4,.2) node[pos=1]{8/10};
    \fill [bar] (0,0) rectangle (3.2,.2);
\end{tikzpicture}

看上去不太好。

能否请你帮忙?

答案1

您需要调整节点的大小和位置。正如您所说,节点的中心将位于栏的右上角。这当然不是您想要的(我猜是这样)。尝试:

\documentclass[tikz]{standalone}
\usepackage{xcolor}

\definecolor{bar100}{RGB}{230,230,250}
\definecolor{bar}{RGB}{147,112,219}

\begin{document}\tiny

\tikzset{barnode/.append style={text height=(.2cm-2.5pt),text depth=.5pt,
  inner sep=1pt,outer sep=0pt,align=right,anchor=north east,
  black},
  barnode at center/.append style={barnode,text width=(4cm-2pt),align=center}
}

\begin{tikzpicture}
  \fill [bar100] (0,0) rectangle (4,.2) node[barnode]{8/10}; 
    % will be hidden if bar is 9/10 or 10/10
  \fill [bar] (0,0) rectangle (3.2,.2);
\end{tikzpicture}

\begin{tikzpicture}
  \fill [bar100] (0,0) rectangle (4,.2) coordinate (a);
  \fill [bar] (0,0) rectangle (3.2,.2);
  \node [barnode] at (a) {8/10};
\end{tikzpicture}

\begin{tikzpicture}
  \fill [bar100] (0,0) rectangle (4,.2) coordinate (b);
  \fill [bar] (0,0) rectangle (3.2,.2);
  \node [barnode at center] at (b) {8/10};
\end{tikzpicture}

\end{document}

在此处输入图片描述

在此处输入图片描述

请注意,该pos选项仅当您将节点放在路径上时才有意义,例如\draw (0,0) -- node[pos=.75] {foo} (0,3);,其中pos表示节点在路径上的位置,0 表示位于路径的最开始处,1 表示位于路径的最结束处。

请注意,如果您将节点附加到第一个栏,第二个栏可能会覆盖节点的文本。因此,最好使用坐标来引用此点。或者在两个栏后放置另一个与 100% 栏大小相同的节点。

答案2

不同的方法:定义具有可变宽度的节点会给出更短的代码:

\documentclass{article}
\usepackage{tikz}
\usepackage{xcolor}

\definecolor{bar100}{RGB}{230,230,250}
\definecolor{bar}{RGB}{147,112,219}
\tikzset{
barnode/.style args = {#1/#2}{
    minimum width=#1, fill=#2, minimum height=2mm,
    text width =\pgfkeysvalueof{/pgf/minimum width}-2*\pgfkeysvalueof{/pgf/inner xsep},
    inner xsep=1pt, inner ysep=0pt, outer sep=0pt, font=\tiny, text=black, align=left,
    right}
        }

\begin{document}
    \begin{tikzpicture}
\node [barnode= 4mm/bar]    at (0.0,0) {};
\node [barnode=36mm/bar100] at (0.4,0) {1/10};
    \end{tikzpicture}

    \begin{tikzpicture}
\node [barnode=32mm/bar]    at (0.0,0) {};
\node [barnode= 8mm/bar100] at (3.2,0) {8/10};
    \end{tikzpicture}

    \begin{tikzpicture}
\node [barnode=40mm/bar]    at (0.0,0) {};
\node [barnode= 0mm/bar100] at (4.0,0) {10/10};
    \end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容