我在 Tikz 中的代码有问题。我需要第 x 行名称之间的空格更小。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[czech]{babel}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{amsthm}
\usepackage{graphicx}
\usepackage{calc}
\usepackage{ifthen}
\usepackage{tikz}
\usepackage[colorlinks=true, linkcolor=black]{hyperref}
\usepackage{pgfplots}
\pgfplotsset{width=7cm,compat=1.8}
\begin{document}
\begin{figure}[htb]
\centering
\begin{tikzpicture}
\begin{axis}[
ybar,
xlabel = Strany,
xmin = 0.5,
xmax = 10.5,
ymin = 0,
ymax = 25,
axis x line* = bottom,
axis y line* = left,
ylabel= Procenta,
width= 2.8\textwidth,
height = 0.6\textwidth,
ymajorgrids = true,
bar width = 2mm,
xticklabels = \empty,
extra x ticks = {1,2,3,4,5,6,7},
extra x tick labels = {ČSSD,ANO,KSČM,TOP,Ods,Úsvit,KDU-ČSL},
]
\addplot+[mark=none, orange, very thick] coordinates {
(1,20)
};
\addplot+[mark=none, blue, very thick] coordinates {
(2,19)
};
\addplot+[mark=none, purple, very thick] coordinates {
(3,15)
};
\addplot+[mark=none, blue, very thick] coordinates {
(4,12)
};
\addplot+[mark=none, green, very thick] coordinates {
(5,8)
};
\addplot+[mark=none, yellow, very thick] coordinates {
(6,7)
};
\addplot+[mark=none, yellow, very thick] coordinates {
(7,7)
};
\end{axis}
\end{tikzpicture}
\caption[Volby do Poslanecké sněmovny 2014]{Volby do Poslanecké sněmovny 2014}
\label{fig:new_ev}
\end{figure}
\end{document}
答案1
条形之间的间距主要由轴的宽度决定,因此自然删除之前2.8
的\textwidth
会有所帮助。然而,还有另一个问题:
使用时,\begin{axis}[ybar,...]
每个想法都会\addplot
在每个x
坐标处创建一个条形。以手册中的以下示例为例:
\documentclass[border=4mm]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
legend style={at={(0.5,-0.15)},
anchor=north,legend columns=-1},
ybar,
bar width=7pt,
]
\addplot
coordinates {(1930,50e6) (1940,33e6)
(1950,40e6) (1960,50e6) (1970,70e6)};
\addplot
coordinates {(1930,38e6) (1940,42e6)
(1950,43e6) (1960,45e6) (1970,65e6)};
\addplot
coordinates {(1930,15e6) (1940,12e6)
(1950,13e6) (1960,25e6) (1970,35e6)};
\legend{Far,Near,Here,Annot}
\end{axis}
\end{tikzpicture}
\end{document}
在每个 x 坐标上生成三个条形,每个条形对应一个\addplot
,稍微偏移一点,这样就不会重叠:
要点是,当\addplot
您的 中有多个 s时axis
,它们将相对于 x 坐标稍微移动一点,以便为其他\addplot
s 中的条形腾出空间。因此,当您有七个\addplot
s 时,pgfplots
将在每个 x 坐标处为七个条形腾出空间。因此,第一个条形位于刻度线的最左侧,第二个条形稍近一点,依此类推,最后一个条形位于刻度线的最右侧。
你应该做的是
只使用一个
\addplot
,或者移至
ybar
选项\addplot
。
如果选择第一种,所有条形都会有相同的颜色,但我认为在这种情况下也一样。以下代码演示了这两种方法。
下面你会注意到我使用了symbolic x coords
,删除了xmin
/ xmax
,并添加了xticklabel style={font=\vphantom{Ú}}
。后者使所有刻度标签的高度相同,因此它们正确对齐。我还将宽度减小到0.95\textwidth
,并bar width
稍微增加了 。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
\pgfplotsset{width=7cm,compat=1.8}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}[
ybar,
xlabel = Strany,
ymin = 0,
ymax = 25,
axis x line* = bottom,
axis y line* = left,
ylabel= Procenta,
width= 0.95\textwidth,
height = 0.6\textwidth,
ymajorgrids = true,
bar width = 5mm,
symbolic x coords = {ČSSD,ANO,KSČM,TOP,Ods,Úsvit,KDU-ČSL},
xticklabel style={font=\vphantom{Ú}}
]
\addplot coordinates {
(ČSSD,20) (ANO,19) (KSČM,15) (TOP,12) (Ods,8) (Úsvit,7) (KDU-ČSL,7)
};
\end{axis}
\end{tikzpicture}
\caption[Volby do Poslanecké sněmovny 2014]{Volby do Poslanecké sněmovny 2014}
\label{fig:new_ev}
\end{figure}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}[
no markers,
xlabel = Strany,
ymin = 0,
ymax = 25,
axis x line* = bottom,
axis y line* = left,
ylabel= Procenta,
width= 0.95\textwidth,
height = 0.6\textwidth,
ymajorgrids = true,
bar width = 5mm,
symbolic x coords = {ČSSD,ANO,KSČM,TOP,Ods,Úsvit,KDU-ČSL},
xticklabel style={font=\vphantom{Ú}}
]
\addplot+[ybar, fill, orange] coordinates {
(ČSSD,20)
};
\addplot+[ybar, fill, blue] coordinates {
(ANO,19)
};
\addplot+[ybar, fill, purple] coordinates {
(KSČM,15)
};
\addplot+[ybar, fill, blue] coordinates {
(TOP,12)
};
\addplot+[ybar, fill, green] coordinates {
(Ods,8)
};
\addplot+[ybar, fill, yellow] coordinates {
(Úsvit,7)
};
\addplot+[ybar, fill, yellow] coordinates {
(KDU-ČSL,7)
};
\end{axis}
\end{tikzpicture}
\caption[Volby do Poslanecké sněmovny 2014]{Volby do Poslanecké sněmovny 2014}
\label{fig:new_ev}
\end{figure}
\end{document}