我想在技能栏中添加文本(居中或右对齐),定义如下:
\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}