甘特图和 pdflscape

甘特图和 pdflscape

我正在尝试将甘特图(使用pgfgantt包)置于横向模式(使用pdflscape包),但遇到了一个问题:

看起来,要么是因为pgfganttpdflscape要么是因为fancyhdr,我的甘特图超出了边距——即超出了页面的右边距(在横向布局上,如下图所示)。 在此处输入图片描述

这是我的代码:

\documentclass{article}

\usepackage{tikz}
\usepackage{pgfgantt}
\usepackage{pdflscape}
\usepackage{fancyhdr}

\definecolor{barblue}{RGB}{153,204,254}

\begin{document}

\begin{landscape}
    \begin{figure}
    \centering
        \begin{ganttchart}[%Specs
            y unit title=0.4cm,
            y unit chart=0.5cm,
            canvas/.style={fill=none, draw=black!7, line width=.75pt},
            vgrid,
            title label anchor/.style={below=-1.6ex},
            title left shift=.05,
            title right shift=-.05,
            title height=1,
            title/.style={fill=none},
            title label font=\bfseries\footnotesize,
            bar/.style={fill=barblue},
            incomplete/.style={fill=white},
            progress label text={},
            bar height=0.7,
            group right shift=0,
            group top shift=.6,
            group height=.3,
            group peaks={}{}{.2}]{36}

            %labels
            \gantttitle[title/.style={draw=none}]{2013}{18}
            \gantttitle[title/.style={draw=none}]{2014}{18} \\
            \gantttitle{Jul}{3}
            \gantttitle{Aug}{3} 
            \gantttitle{Set}{3}
            \gantttitle{Oct}{3}
            \gantttitle{Nov}{3} 
            \gantttitle{Dec}{3} 
            \gantttitle{Jan}{3} 
            \gantttitle{Feb}{3} 
            \gantttitle{Mar}{3} 
            \gantttitle{Apr}{3} 
            \gantttitle{May}{3} 
            \gantttitle{Jun}{3}\\

            % Parameter Selection
            \ganttgroup{1. Parameter Selection}{1}{9}\\ %elem0
            \ganttbar[progress=10]{Tests}{1}{4}\\
            \ganttmilestone{Final parameters}{9} \\

            % Algorithm Development
            \ganttgroup{2. Algorithm Development and testing}{10}{33} \\ 
            \ganttbar[progress=2]{2.1 Optimization}{10}{19} \\
            \ganttmilestone{Target function}{13} \\
            \ganttbar[progress=1]{2.2 Neural Network}{20}{33} \\
            \ganttmilestone{M 2.2}{33} \\       

            % Algorithm Testing
            \ganttgroup{3. Algorithm testing}{25}{30} \\ 


        \end{ganttchart}
    \caption{Gantt diagram for 2013--2014 Academic year}
    \end{figure}
\end{landscape}

答案1

您的 MWE 不再有效,因为pgfgantt自您提出问题以来,软件包已经更新,但我认为解决方案并不依赖于更改。一种选择是在调整大小框中缩放图表。

\resizebox{\linewidth}{\textheight}{\begin{ganttchart} ... }

我使用,\linewidth因为landscape环境没有textwidth像我预期的那样设置。不清楚您是否总是希望图表填满一页。您可以将图表保存在框中

\sbox0{\begin{ganttchart} ... }

然后做

\ifdim\wd0>\linewidth\relax%
  \resizebox{\linewidth}{!}{\usebox{0}}%
\else%
  \usebox{0}%
\fi%

有条件地缩放图表。

这种缩放的缺点是文本会被缩放,这可能不是您想要的。另一种方法是使用键值x unit。这x unit会影响图表的宽度,但这不是唯一的原因(还有标签和单位数)。一个不完全自动化的解决方案是

\sbox0{2. Algorithm Development and testing}
\newlength{\chartlongestlabel}
\setlength{\chartlongestlabel}{\wd0}
\newlength{\chartwidth}
\setlength{\chartwidth}{\textheight}
\addtolength{\chartwidth}{-\chartlongestlabel}

\begin{ganttchart}[x unit=0.027\chartwidth, ... ]{1}{36}

其中0.027大约是1/36并且最长可能没有确切的大小,这取决于您如何设置格式键。

相关内容