我希望以下两个图使用pgfplots
和共享它们的 x 轴tikzpicture
。重要的是第一个图是完全对数的,而第二个图只有 x 轴(半对数 x)。我没有找到这种特殊情况的办法。除此之外,我仍然希望有两个图。所以第一个图,然后是一条线,第二个图下面有 x 轴。只有这个 x 轴可以共享。
\documentclass[english]{article}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\include{pgfpages}
\makeatletter
\usepackage {tikz}
\usepackage{pgfplots}
\begin{document}
\begin{center}
\begin{tikzpicture}
\begin{loglogaxis}[width=0.8\textwidth,height=0.3\textheight]
\addplot[red] plot coordinates{(1,1)(2,4)(3,9)(4,16)};
\end{loglogaxis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{semilogxaxis}[width=0.8\textwidth,height=0.15\textheight]
\addplot[blue] plot coordinates{(1,0)(2,0.2)(3,0.2)(4,0.4)};
\end{semilogxaxis}
\end{tikzpicture}
\end{center}
\end{document}
所以总的来说应该有一个tikzpicture
。如果 CSV 导入也能使用它就太好了,因为在我的论文中我就是以这种方式导入的,但在这里我把它省略了,以使其尽可能简单。
答案1
假设接受我的答案等同于“这就是我所寻找的,我修改了我的答案,在代码中添加了一些注释,并且进行了第二次尝试,使用该pgfplots.groupplots
库给出了相同的结果。
有关详细信息,请查看代码中的注释。
% used PGFPlots v1.16
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{loglogaxis}[
% don't show any `xticklabels' on the first (upper) plot
xticklabels={},
% give the plot a (coordinate/node) `name'
name=first plot,
]
\addplot [red] coordinates { (1,1)(2,4)(3,9)(4,16) };
\end{loglogaxis}
\begin{semilogxaxis}[
% plot the second plot relative to the first one ...
at=(first plot.south),
% ... and use an appropriate `anchor'
anchor=north,
% % if you need an "offset" between the plots, you can add e.g. a `yshift'
% yshift=-5mm,
]
\addplot [blue] coordinates { (1,0)(2,0.2)(3,0.2)(4,0.4) };
\end{semilogxaxis}
\end{tikzpicture}
\end{document}
这是使用库的解决方案pgfplots.groupplots
。
% used PGFPlots v1.16
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{groupplots}
\begin{document}
\begin{tikzpicture}
\begin{groupplot}[
group style={
% set how the plots should be organized
group size=1 by 2,
% only show ticklabels and axis labels on the bottom
x descriptions at=edge bottom,
% set the `vertical sep' to zero
vertical sep=0pt,
},
% set the x axis default to logarithmic
xmode=log
]
% start the first plot
\nextgroupplot[
ymode=log,
]
\addplot [red] coordinates { (1,1)(2,4)(3,9)(4,16) };
% start the second plot
\nextgroupplot[
ymode=normal,
]
\addplot [blue] coordinates { (1,0)(2,0.2)(3,0.2)(4,0.4) };
\end{groupplot}
\end{tikzpicture}
\end{document}