分组图上的一致单位向量

分组图上的一致单位向量

参见下图:

\documentclass[12pt,border=5mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepgfplotslibrary{groupplots}

\begin{document}

\begin{tikzpicture}
    \begin{groupplot}[
        group style={group size=2 by 1,horizontal sep=5cm},
        title style = {align=center},
        xbar,
        point meta=explicit symbolic,
        nodes near coords,
        nodes near coords align = {right},
        y axis line style = { opacity = 0 },
        axis x line       = none,
        tickwidth         = 0pt,
        y dir = reverse
    ]
    \nextgroupplot[
        ytick={1,2},
        yticklabels={A,B},      
        title={First graph}
    ]
    \addplot coordinates {
        (20,1) [20]
        (10,2) [10]
    };
    \nextgroupplot[
        title={Second graph},
        ytick={1,2},
        yticklabels={A,Looooooooooong B}
    ]
    \addplot coordinates {
            (20,1) [20]
            (30,2) [30]
    };
    \end{groupplot}
\end{tikzpicture}

\end{document}

第一张图

此图令人困惑。为了能够比较这两个图,第一个图中的条形“20”应与第二个图中的条形“20”一样长。此外,第二个图中的条形“30”应为第一个图中的条形“10”的 3 倍长。

我该如何解决这个问题?

我尝试了在看似相关的帖子中找到的一些修复方法,就像这个或者这个,但它们似乎对我的情况不起作用。我想我只是不明白为什么缩放在 中会这样工作pgfplots

例如,我认为添加x=1cm选项\begin{groupplot}可以解决我的问题,我的理由是它会告诉pgfplots无论图表如何,1 个单位必须始终为 1cm。但这只会让问题变得更糟: 在此处输入图片描述

然后我想也许我应该重新调整第二张图的 x 轴。由于第二张图中的最大数字 30 比第一张图中的最大数字 20 大 50%,也许添加x post scale = 1.5第二张图会有帮助?但没有: 在此处输入图片描述

我相信问题可能来自于第二张图表中有一个长标签,但添加该scale only axis选项并不能解决问题。

我甚至不需要自动化解决方案,只需要图中的 10 占用相同的空间。

答案1

您需要做的就是添加,xmin=0例如x=2mm,y=2cm

\documentclass[12pt,border=5mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepgfplotslibrary{groupplots}

\begin{document}

\begin{tikzpicture}
    \begin{groupplot}[x=2mm,y=2cm,
        group style={group size=2 by 1,horizontal sep=5cm},
        title style = {align=center},
        xbar,xmin=0,
        point meta=explicit symbolic,
        nodes near coords,
        nodes near coords align = {right},
        y axis line style = { opacity = 0 },
        axis x line       = none,
        tickwidth         = 0pt,
        y dir = reverse
    ]
    \nextgroupplot[
        ytick={1,2},
        yticklabels={A,B},      
        title={First graph}
    ]
    \addplot coordinates {
        (20,1) [20]
        (10,2) [10]
    };
    \nextgroupplot[
        title={Second graph},
        ytick={1,2},
        yticklabels={A,Looooooooooong B}
    ]
    \addplot coordinates {
            (20,1) [20]
            (30,2) [30]
    };
    \end{groupplot}
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容