两个图如何共享一个 x 轴,但有两个不同的 y 轴?

两个图如何共享一个 x 轴,但有两个不同的 y 轴?

我希望以下两个图使用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}

该图显示了上述代码的结果

相关内容