我是 TikZ 软件包的新手。我正在使用 pgfplots 制作一个非常简单的图。我使用的代码是从网上找到的示例中复制而来的,但我的输出与我看到的示例不同。
这是代码:
\pgfplotsset{ width=0.45\linewidth,
xmin=0,xmax=100,
ymin=0,ymax=1,
grid=major
}
\begin{tikzpicture}
\begin{axis}[
xlabel=Percentage,
ylabel=Accuracy]
\addplot[smooth,mark=*,blue] plot coordinates {
(11,0.6)
(15, 0.71)
(19, 0.7)
(25, 0.74)
(32, 0.73)
(40, 0.78)
(50, 0.81)
(51, 0.79)
(55, 0.79)
(56, 0.79)
(58, 0.77)
(61, 0.77)
(69, 0.77)
};
\addlegendentry{legend}
[...]
在输出中,轴刻度的标签离线太近了。有什么方法可以将其移远吗?[我无法发布图片,因为我的声誉太低]
我已经阅读了手册并检查了其他问题,但我找不到需要使用的选项/命令。
请你帮助我好吗?
在按照评论的要求编写最小示例时,我发现只有当文档类为时才会出现该问题baposter
。使用该类,article
它可以正常工作。
具有类的最小工作示例baposter
如下:
\documentclass[a0paper,portrait]{baposter}
\usepackage{graphicx}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{poster}{
grid=false,
colspacing=0.7em,
eyecatcher=false,
bgColorOne=white,
background=plain,
} %poster
% eyecatcher
{
}
% title
{
TITLE
}
%Authors
{
AUTHORS
}
% Logo
{
}
\headerbox{header}{name=header,column=0,row=0,span=4}{
\pgfplotsset{width=0.45\linewidth,
xmin=0,xmax=100,
ymin=0,ymax=1,
grid=major
}
\begin{tikzpicture}
\begin{axis}[
xlabel=p,
ylabel=a]
\addplot[smooth,mark=*,blue] plot coordinates {
(11, 0.6)
(15, 0.71)
(19, 0.7)
(25, 0.74)
};
\addlegendentry{legend}
\end{axis}
\end{tikzpicture}
} % headerbox
\end{poster}
\end{document}
答案1
发生这种情况的原因是,该类baposter
将其所有内容放入tikzpicture
带有选项的 中inner sep=0pt, outer sep=0pt
,该选项被传递给您的tikzpicture
,导致打印刻度标签节点时没有任何填充。您可以通过inner sep=0.333em, outer sep=0.5\pgflinewidth
向tikzpicture
选项中添加内容来重置填充(这些是默认值):
\documentclass[a0paper,portrait]{baposter}
\usepackage{graphicx}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{poster}{
grid=false,
colspacing=0.7em,
eyecatcher=false,
bgColorOne=white,
background=plain,
} %poster
% eyecatcher
{
}
% title
{
TITLE
}
%Authors
{
AUTHORS
}
% Logo
{
}
\headerbox{header}{name=header,column=0,row=0,span=4}{
\pgfplotsset{width=0.45\linewidth,
xmin=0,xmax=100,
ymin=0,ymax=1,
grid=major
}
\begin{tikzpicture}[inner sep=0.3333em, outer sep=0.5\pgflinewidth]
\begin{axis}[
xlabel=p,
ylabel=a]
\addplot[smooth,mark=*,blue] plot coordinates {
(11, 0.6)
(15, 0.71)
(19, 0.7)
(25, 0.74)
};
\addlegendentry{legend}
\end{axis}
\end{tikzpicture}
} % headerbox
\end{poster}
\end{document}
答案2
您可以使用节点代替 xlabel 和 ylabel。您可以通过定义正确的位置将节点放置在您想要的位置。
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\usetikzlibrary{plotmarks, arrows, shapes, backgrounds, shadows, positioning, calc, fit}
\begin{document}
\pgfplotsset{ width=0.45\linewidth,
xmin=0,xmax=100,
ymin=0,ymax=1,
grid=major
}
\begin{tikzpicture}
\begin{axis}[
%xlabel=Percentage,
%ylabel=Accuracy
]
\addplot[smooth,mark=*,blue] plot coordinates {
(11,0.6)
(15, 0.71)
(19, 0.7)
(25, 0.74)
(32, 0.73)
(40, 0.78)
(50, 0.81)
(51, 0.79)
(55, 0.79)
(56, 0.79)
(58, 0.77)
(61, 0.77)
(69, 0.77)
};
\end{axis}
\node at (1.5cm,-0.8cm) {Percentage};
\node at (-1cm,1.5cm) [rotate=90, anchor=base] {Acccuracy};
\end{tikzpicture}
\end{document}