我在使用 tikzpicture 时遇到了问题。我用 Latex 制作了我的简历,但有一点不太好。第一个图表应该看起来和其他图表一样。如果我删除了放大 y 限制 = {abs=1cm},图表将有多个条目出现两次。但这是代码。提前谢谢您。
\begin{center}
\begin{tikzpicture}[thick,scale=0.8, every node/.style={scale=0.8},every node/.style={font=\sffamily}]
\begin{axis}[title = \textbf{Sprachen},
xbar,
y axis line style = { opacity = 0 },
axis x line = none,
tickwidth = 0pt,
enlarge y limits={abs=1cm},
enlarge x limits = 0.02,
symbolic y coords = { Französisch, Englisch, Deutsch},
%nodes near coords,
xmin=0,
xmax=1,
]
\addplot coordinates {
(1,Deutsch)
(0.65,Englisch)
(0.3,Französisch)
};
%\legend{Topics}
\end{axis}
\node[text width=3cm] at (1.5,-0.5)
{Grundkennt.};
\node[text width=3cm] at (5.25,-0.5)
{gut};
\node[text width=3cm] at (7.4,-0.5)
{sehr gut};
\draw (2.5,0.1) -- (2.5, 5.5);
\draw (5,0.1) -- (5, 5.5);
\end{tikzpicture}
\end{center}
编辑以更好地解释问题:
以下 MWE:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{pgfplots}\pgfplotsset{compat=1.13}
\begin{document}
\begin{center}
\begin{tikzpicture}[thick,scale=0.8, every node/.style={scale=0.8},every node/.style={font=\sffamily}]
\begin{axis}[title = \textbf{Sprachen},
xbar,
y axis line style = { opacity = 0 },
axis x line = none,
tickwidth = 0pt,
enlarge x limits = 0.02,
symbolic y coords = {Französisch, Englisch, Deutsch},
%nodes near coords,
xmin=0,
xmax=1,
]
\addplot coordinates {
(1,Deutsch)
(0.65,Englisch)
(0.3,Französisch)
};
%\legend{Topics}
\end{axis}
\node[text width=3cm] at (1.5,-0.5)
{Grundkennt.};
\node[text width=3cm] at (5.25,-0.5)
{gut};
\node[text width=3cm] at (7.4,-0.5)
{sehr gut};
\draw (2.5,0.1) -- (2.5, 5.5);
\draw (5,0.1) -- (5, 5.5);
\end{tikzpicture}
\end{center}
\end{document}
有重复的垂直条目:
...通过添加以下内容似乎可以纠正问题
enlarge y limits={abs=1cm},
但是如果有虚假的垂直空间---会发生什么?
答案1
您可以使用y=1cm
来设置符号坐标之间的距离。该节点current axis
可用于绘制黑线。另外,我会修剪左侧的图,以便所有条形图都左对齐。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}% loads also tikz
\pgfplotsset{compat=1.13}
\tikzset{
mycvplot/.style={
thick,
scale=.8,
nodes={scale=.8,font=\sffamily},
trim left=-4em,
/pgfplots/every axis/.append style={
xbar,
axis line style={draw=none},
tickwidth=0pt,
enlarge x limits=.05,
xmin=0,xmax=1,
xtick={.15,.52,.92},
xticklabels={Grundkennt.,gut,sehr gut,},
y=1cm,
enlarge y limits={abs=.5cm},
ytick=data,
title style={at={(.52,1)}}
}
}
}
\newcommand\cvplotlines{
\foreach \x in {2.5,5}
\draw (\x,0|-current axis.south) -- (\x,0|-current axis.north);
}
\usepackage{showframe}% to show the page layout
\begin{document}
\begin{center}
\begin{tikzpicture}[mycvplot]
\begin{axis}[
title = \textbf{Sprachen},
symbolic y coords = {Französisch, Englisch, Deutsch},
]
\addplot coordinates {
(1,Deutsch)
(0.65,Englisch)
(0.3,Französisch)
};
\end{axis}
\cvplotlines
\end{tikzpicture}
\end{center}
\begin{center}
\begin{tikzpicture}[mycvplot]
\begin{axis}[
title = \textbf{Programmiersprachen},
symbolic y coords = {HTML/JavaScript,S,C\#,C,\LaTeX,Python},
]
\addplot coordinates {
(1,Python)
(1,\LaTeX)
(0.65,C)
(0.65,C\#)
(0.65,S)
(0.3,HTML/JavaScript)
};
\end{axis}
\cvplotlines
\end{tikzpicture}
\end{center}
\end{document}
结果:
答案2
可以通过添加选项来删除双勾ytick=data
。间距较大是因为条形图分布均匀,以填充图高。添加其他条目可以证明这一点。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{pgfplots}\pgfplotsset{compat=1.13}
\begin{document}
\begin{center}
\begin{tikzpicture}[thick,scale=0.8, every node/.style={scale=0.8},every node/.style={font=\sffamily}]
\begin{axis}[title = \textbf{Sprachen},
xbar,
y axis line style = { opacity = 0 },
axis x line = none,
tickwidth = 0pt,
enlarge x limits = 0.02,
symbolic y coords = {Französisch, Englisch, Deutsch},
ytick=data,
%nodes near coords,
xmin=0,
xmax=1,
]
\addplot coordinates {
(1,Deutsch)
(0.65,Englisch)
(0.3,Französisch)
};
%\legend{Topics}
\end{axis}
\node[text width=3cm] at (1.5,-0.5)
{Grundkennt.};
\node[text width=3cm] at (5.25,-0.5)
{gut};
\node[text width=3cm] at (7.4,-0.5)
{sehr gut};
\draw (2.5,0.1) -- (2.5, 5.5);
\draw (5,0.1) -- (5, 5.5);
\begin{scope}[xshift=10cm]
\begin{axis}[title = \textbf{Sprachen},
xbar,
y axis line style = { opacity = 0 },
axis x line = none,
tickwidth = 0pt,
enlarge x limits = 0.02,
symbolic y coords = {Japanisch, Rumänisch, Französisch, Englisch, Deutsch},
ytick=data,
%nodes near coords,
xmin=0,
xmax=1,
]
\addplot coordinates {
(1,Deutsch)
(0.65,Englisch)
(0.3,Französisch)
(0.2,Rumänisch)
(0.1,Japanisch)
};
%\legend{Topics}
\end{axis}
\node[text width=3cm] at (1.5,-0.5)
{Grundkennt.};
\node[text width=3cm] at (5.25,-0.5)
{gut};
\node[text width=3cm] at (7.4,-0.5)
{sehr gut};
\draw (2.5,0.1) -- (2.5, 5.5);
\draw (5,0.1) -- (5, 5.5);
\end{scope}
\end{tikzpicture}
\end{center}
\end{document}