Gantt chart - how to change months to years












4















I am kinda new to LaTeX. I wanted to implement a Gantt chart that corresponds to years 2012 - 2019.



I looked for references at this code that uses tikz, manage to configure it pretty much as I needed, but couldn't change the "months" (1,2,3..15) to the years I needed.



Snippet:



documentclass{article}
usepackage[a4paper,landscape,margin=3cm]{geometry}
usepackage{tikz}
usetikzlibrary{calc}

% GanttHeader setups some parameters for the rest of the diagram
% #1 Width of the diagram
% #2 Width of the space reserved for task numbers
% #3 Width of the space reserved for task names
% #4 Number of months in the diagram
% In addition to these parameters, the layout of the diagram is influenced
% by keys defined below, such as y, which changes the vertical scale
defGanttHeader#1#2#3#4{%
pgfmathparse{(#1-#2-#3)/#4}
tikzset{y=7mm, task number/.style={left, font=bfseries},
task description/.style={text width=#3, right, draw=none,
font=sffamily, xshift=#2,
minimum height=2em},
gantt bar/.style={draw=black, fill=blue!30},
help lines/.style={draw=black!30, dashed},
x=pgfmathresult pt
}
deftotalmonths{#4}
node (Header) [task description] at (0,0) {textbf{large Task Description}};
begin{scope}[shift=($(Header.south east)$)]
foreach x in {1,...,#4}
node[above] at (x,0) {footnotesizex};
end{scope}
}

% This macro adds a task to the diagram
% #1 Number of the task
% #2 Task's name
% #3 Starting date of the task (month's number, can be non-integer)
% #4 Task's duration in months (can be non-integer)
defTask#1#2#3#4{%
node[task number] at ($(Header.west) + (0, -#1)$) {#1};
node[task description] at (0,-#1) {#2};
begin{scope}[shift=($(Header.south east)$)]
draw (0,-#1) rectangle +(totalmonths, 1);
foreach x in {1,...,totalmonths}
draw[help lines] (x,-#1) -- +(0,1);
filldraw[gantt bar] ($(#3, -#1+0.2)$) rectangle +(#4,0.6);
end{scope}
}

% Example
begin{document}
thispagestyle{empty}
begin{tikzpicture}
GanttHeader{.8textwidth}{2ex}{4cm}{15}
Task{1}{Requirement analysis}{0}{3}
Task{2}{Devise an abstract}{0.5}{1}
Task{3}{Develop interfaces}{3}{3}
Task{4}{Adapt existing}{4.5}{3}
Task{5}{Implement and evaluate}{5}{4.5}
Task{6}{Specify Phase II design}{8}{3}
Task{7}{Prepare final report}{11}{1}
end{tikzpicture}
end{document}









share|improve this question




















  • 3





    You might consider using pgfgantt. See tex.stackexchange.com/q/63877/2693 for an example.

    – Alan Munn
    Jan 12 at 21:52
















4















I am kinda new to LaTeX. I wanted to implement a Gantt chart that corresponds to years 2012 - 2019.



I looked for references at this code that uses tikz, manage to configure it pretty much as I needed, but couldn't change the "months" (1,2,3..15) to the years I needed.



Snippet:



documentclass{article}
usepackage[a4paper,landscape,margin=3cm]{geometry}
usepackage{tikz}
usetikzlibrary{calc}

% GanttHeader setups some parameters for the rest of the diagram
% #1 Width of the diagram
% #2 Width of the space reserved for task numbers
% #3 Width of the space reserved for task names
% #4 Number of months in the diagram
% In addition to these parameters, the layout of the diagram is influenced
% by keys defined below, such as y, which changes the vertical scale
defGanttHeader#1#2#3#4{%
pgfmathparse{(#1-#2-#3)/#4}
tikzset{y=7mm, task number/.style={left, font=bfseries},
task description/.style={text width=#3, right, draw=none,
font=sffamily, xshift=#2,
minimum height=2em},
gantt bar/.style={draw=black, fill=blue!30},
help lines/.style={draw=black!30, dashed},
x=pgfmathresult pt
}
deftotalmonths{#4}
node (Header) [task description] at (0,0) {textbf{large Task Description}};
begin{scope}[shift=($(Header.south east)$)]
foreach x in {1,...,#4}
node[above] at (x,0) {footnotesizex};
end{scope}
}

% This macro adds a task to the diagram
% #1 Number of the task
% #2 Task's name
% #3 Starting date of the task (month's number, can be non-integer)
% #4 Task's duration in months (can be non-integer)
defTask#1#2#3#4{%
node[task number] at ($(Header.west) + (0, -#1)$) {#1};
node[task description] at (0,-#1) {#2};
begin{scope}[shift=($(Header.south east)$)]
draw (0,-#1) rectangle +(totalmonths, 1);
foreach x in {1,...,totalmonths}
draw[help lines] (x,-#1) -- +(0,1);
filldraw[gantt bar] ($(#3, -#1+0.2)$) rectangle +(#4,0.6);
end{scope}
}

% Example
begin{document}
thispagestyle{empty}
begin{tikzpicture}
GanttHeader{.8textwidth}{2ex}{4cm}{15}
Task{1}{Requirement analysis}{0}{3}
Task{2}{Devise an abstract}{0.5}{1}
Task{3}{Develop interfaces}{3}{3}
Task{4}{Adapt existing}{4.5}{3}
Task{5}{Implement and evaluate}{5}{4.5}
Task{6}{Specify Phase II design}{8}{3}
Task{7}{Prepare final report}{11}{1}
end{tikzpicture}
end{document}









share|improve this question




















  • 3





    You might consider using pgfgantt. See tex.stackexchange.com/q/63877/2693 for an example.

    – Alan Munn
    Jan 12 at 21:52














4












4








4


1






I am kinda new to LaTeX. I wanted to implement a Gantt chart that corresponds to years 2012 - 2019.



I looked for references at this code that uses tikz, manage to configure it pretty much as I needed, but couldn't change the "months" (1,2,3..15) to the years I needed.



Snippet:



documentclass{article}
usepackage[a4paper,landscape,margin=3cm]{geometry}
usepackage{tikz}
usetikzlibrary{calc}

% GanttHeader setups some parameters for the rest of the diagram
% #1 Width of the diagram
% #2 Width of the space reserved for task numbers
% #3 Width of the space reserved for task names
% #4 Number of months in the diagram
% In addition to these parameters, the layout of the diagram is influenced
% by keys defined below, such as y, which changes the vertical scale
defGanttHeader#1#2#3#4{%
pgfmathparse{(#1-#2-#3)/#4}
tikzset{y=7mm, task number/.style={left, font=bfseries},
task description/.style={text width=#3, right, draw=none,
font=sffamily, xshift=#2,
minimum height=2em},
gantt bar/.style={draw=black, fill=blue!30},
help lines/.style={draw=black!30, dashed},
x=pgfmathresult pt
}
deftotalmonths{#4}
node (Header) [task description] at (0,0) {textbf{large Task Description}};
begin{scope}[shift=($(Header.south east)$)]
foreach x in {1,...,#4}
node[above] at (x,0) {footnotesizex};
end{scope}
}

% This macro adds a task to the diagram
% #1 Number of the task
% #2 Task's name
% #3 Starting date of the task (month's number, can be non-integer)
% #4 Task's duration in months (can be non-integer)
defTask#1#2#3#4{%
node[task number] at ($(Header.west) + (0, -#1)$) {#1};
node[task description] at (0,-#1) {#2};
begin{scope}[shift=($(Header.south east)$)]
draw (0,-#1) rectangle +(totalmonths, 1);
foreach x in {1,...,totalmonths}
draw[help lines] (x,-#1) -- +(0,1);
filldraw[gantt bar] ($(#3, -#1+0.2)$) rectangle +(#4,0.6);
end{scope}
}

% Example
begin{document}
thispagestyle{empty}
begin{tikzpicture}
GanttHeader{.8textwidth}{2ex}{4cm}{15}
Task{1}{Requirement analysis}{0}{3}
Task{2}{Devise an abstract}{0.5}{1}
Task{3}{Develop interfaces}{3}{3}
Task{4}{Adapt existing}{4.5}{3}
Task{5}{Implement and evaluate}{5}{4.5}
Task{6}{Specify Phase II design}{8}{3}
Task{7}{Prepare final report}{11}{1}
end{tikzpicture}
end{document}









share|improve this question
















I am kinda new to LaTeX. I wanted to implement a Gantt chart that corresponds to years 2012 - 2019.



I looked for references at this code that uses tikz, manage to configure it pretty much as I needed, but couldn't change the "months" (1,2,3..15) to the years I needed.



Snippet:



documentclass{article}
usepackage[a4paper,landscape,margin=3cm]{geometry}
usepackage{tikz}
usetikzlibrary{calc}

% GanttHeader setups some parameters for the rest of the diagram
% #1 Width of the diagram
% #2 Width of the space reserved for task numbers
% #3 Width of the space reserved for task names
% #4 Number of months in the diagram
% In addition to these parameters, the layout of the diagram is influenced
% by keys defined below, such as y, which changes the vertical scale
defGanttHeader#1#2#3#4{%
pgfmathparse{(#1-#2-#3)/#4}
tikzset{y=7mm, task number/.style={left, font=bfseries},
task description/.style={text width=#3, right, draw=none,
font=sffamily, xshift=#2,
minimum height=2em},
gantt bar/.style={draw=black, fill=blue!30},
help lines/.style={draw=black!30, dashed},
x=pgfmathresult pt
}
deftotalmonths{#4}
node (Header) [task description] at (0,0) {textbf{large Task Description}};
begin{scope}[shift=($(Header.south east)$)]
foreach x in {1,...,#4}
node[above] at (x,0) {footnotesizex};
end{scope}
}

% This macro adds a task to the diagram
% #1 Number of the task
% #2 Task's name
% #3 Starting date of the task (month's number, can be non-integer)
% #4 Task's duration in months (can be non-integer)
defTask#1#2#3#4{%
node[task number] at ($(Header.west) + (0, -#1)$) {#1};
node[task description] at (0,-#1) {#2};
begin{scope}[shift=($(Header.south east)$)]
draw (0,-#1) rectangle +(totalmonths, 1);
foreach x in {1,...,totalmonths}
draw[help lines] (x,-#1) -- +(0,1);
filldraw[gantt bar] ($(#3, -#1+0.2)$) rectangle +(#4,0.6);
end{scope}
}

% Example
begin{document}
thispagestyle{empty}
begin{tikzpicture}
GanttHeader{.8textwidth}{2ex}{4cm}{15}
Task{1}{Requirement analysis}{0}{3}
Task{2}{Devise an abstract}{0.5}{1}
Task{3}{Develop interfaces}{3}{3}
Task{4}{Adapt existing}{4.5}{3}
Task{5}{Implement and evaluate}{5}{4.5}
Task{6}{Specify Phase II design}{8}{3}
Task{7}{Prepare final report}{11}{1}
end{tikzpicture}
end{document}






tikz-pgf






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Jan 12 at 22:08







JohnDoe

















asked Jan 12 at 21:47









JohnDoeJohnDoe

234




234








  • 3





    You might consider using pgfgantt. See tex.stackexchange.com/q/63877/2693 for an example.

    – Alan Munn
    Jan 12 at 21:52














  • 3





    You might consider using pgfgantt. See tex.stackexchange.com/q/63877/2693 for an example.

    – Alan Munn
    Jan 12 at 21:52








3




3





You might consider using pgfgantt. See tex.stackexchange.com/q/63877/2693 for an example.

– Alan Munn
Jan 12 at 21:52





You might consider using pgfgantt. See tex.stackexchange.com/q/63877/2693 for an example.

– Alan Munn
Jan 12 at 21:52










1 Answer
1






active

oldest

votes


















3














I agree with Alan Munn that you will be much better off if you use pgfgantt. Just in case we can't convince you, you may try



documentclass{article}
usepackage[a4paper,landscape,margin=3cm]{geometry}
usepackage{tikz}
usetikzlibrary{calc}

% GanttHeader setups some parameters for the rest of the diagram
% #1 Width of the diagram
% #2 Width of the space reserved for task numbers
% #3 Width of the space reserved for task names
% #4 Number of months in the diagram
% #5 Start year
% In addition to these parameters, the layout of the diagram is influenced
% by keys defined below, such as y, which changes the vertical scale
defGanttHeader#1#2#3#4#5{%
pgfmathparse{(#1-#2-#3)/#4}
tikzset{y=7mm, task number/.style={left, font=bfseries},
task description/.style={text width=#3, right, draw=none,
font=sffamily, xshift=#2,
minimum height=2em},
gantt bar/.style={draw=black, fill=blue!30},
help lines/.style={draw=black!30, dashed},
x=pgfmathresult pt
}
deftotalmonths{#4}
node (Header) [task description] at (0,0) {textbf{large Task Description}};
begin{scope}[shift=($(Header.south east)$)]
foreach x in {1,...,#4}
node[above] at (x,0) {pgfmathparse{int(x+#5)}footnotesizepgfmathresult};
end{scope}
}

% This macro adds a task to the diagram
% #1 Number of the task
% #2 Task's name
% #3 Starting date of the task (month's number, can be non-integer)
% #4 Task's duration in months (can be non-integer)
defTask#1#2#3#4{%
node[task number] at ($(Header.west) + (0, -#1)$) {#1};
node[task description] at (0,-#1) {#2};
begin{scope}[shift=($(Header.south east)$)]
draw (0,-#1) rectangle +(totalmonths, 1);
foreach x in {1,...,totalmonths}
draw[help lines] (x,-#1) -- +(0,1);
filldraw[gantt bar] ($(#3, -#1+0.2)$) rectangle +(#4,0.6);
end{scope}
}

% Example
begin{document}
thispagestyle{empty}
begin{tikzpicture}
GanttHeader{.8textwidth}{2ex}{4cm}{15}{2003}
Task{1}{Requirement analysis}{0}{3}
Task{2}{Devise an abstract}{0.5}{1}
Task{3}{Develop interfaces}{3}{3}
Task{4}{Adapt existing}{4.5}{3}
Task{5}{Implement and evaluate}{5}{4.5}
Task{6}{Specify Phase II design}{8}{3}
Task{7}{Prepare final report}{11}{1}
end{tikzpicture}
end{document}


enter image description here






share|improve this answer
























  • Marvelous! Thank you <3

    – JohnDoe
    Jan 12 at 23:21











  • @JohnDoe Your welcome! (I updated your nice question also after I realized that you made it an MWE.)

    – marmot
    Jan 12 at 23:22











Your Answer








StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "85"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f469882%2fgantt-chart-how-to-change-months-to-years%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









3














I agree with Alan Munn that you will be much better off if you use pgfgantt. Just in case we can't convince you, you may try



documentclass{article}
usepackage[a4paper,landscape,margin=3cm]{geometry}
usepackage{tikz}
usetikzlibrary{calc}

% GanttHeader setups some parameters for the rest of the diagram
% #1 Width of the diagram
% #2 Width of the space reserved for task numbers
% #3 Width of the space reserved for task names
% #4 Number of months in the diagram
% #5 Start year
% In addition to these parameters, the layout of the diagram is influenced
% by keys defined below, such as y, which changes the vertical scale
defGanttHeader#1#2#3#4#5{%
pgfmathparse{(#1-#2-#3)/#4}
tikzset{y=7mm, task number/.style={left, font=bfseries},
task description/.style={text width=#3, right, draw=none,
font=sffamily, xshift=#2,
minimum height=2em},
gantt bar/.style={draw=black, fill=blue!30},
help lines/.style={draw=black!30, dashed},
x=pgfmathresult pt
}
deftotalmonths{#4}
node (Header) [task description] at (0,0) {textbf{large Task Description}};
begin{scope}[shift=($(Header.south east)$)]
foreach x in {1,...,#4}
node[above] at (x,0) {pgfmathparse{int(x+#5)}footnotesizepgfmathresult};
end{scope}
}

% This macro adds a task to the diagram
% #1 Number of the task
% #2 Task's name
% #3 Starting date of the task (month's number, can be non-integer)
% #4 Task's duration in months (can be non-integer)
defTask#1#2#3#4{%
node[task number] at ($(Header.west) + (0, -#1)$) {#1};
node[task description] at (0,-#1) {#2};
begin{scope}[shift=($(Header.south east)$)]
draw (0,-#1) rectangle +(totalmonths, 1);
foreach x in {1,...,totalmonths}
draw[help lines] (x,-#1) -- +(0,1);
filldraw[gantt bar] ($(#3, -#1+0.2)$) rectangle +(#4,0.6);
end{scope}
}

% Example
begin{document}
thispagestyle{empty}
begin{tikzpicture}
GanttHeader{.8textwidth}{2ex}{4cm}{15}{2003}
Task{1}{Requirement analysis}{0}{3}
Task{2}{Devise an abstract}{0.5}{1}
Task{3}{Develop interfaces}{3}{3}
Task{4}{Adapt existing}{4.5}{3}
Task{5}{Implement and evaluate}{5}{4.5}
Task{6}{Specify Phase II design}{8}{3}
Task{7}{Prepare final report}{11}{1}
end{tikzpicture}
end{document}


enter image description here






share|improve this answer
























  • Marvelous! Thank you <3

    – JohnDoe
    Jan 12 at 23:21











  • @JohnDoe Your welcome! (I updated your nice question also after I realized that you made it an MWE.)

    – marmot
    Jan 12 at 23:22
















3














I agree with Alan Munn that you will be much better off if you use pgfgantt. Just in case we can't convince you, you may try



documentclass{article}
usepackage[a4paper,landscape,margin=3cm]{geometry}
usepackage{tikz}
usetikzlibrary{calc}

% GanttHeader setups some parameters for the rest of the diagram
% #1 Width of the diagram
% #2 Width of the space reserved for task numbers
% #3 Width of the space reserved for task names
% #4 Number of months in the diagram
% #5 Start year
% In addition to these parameters, the layout of the diagram is influenced
% by keys defined below, such as y, which changes the vertical scale
defGanttHeader#1#2#3#4#5{%
pgfmathparse{(#1-#2-#3)/#4}
tikzset{y=7mm, task number/.style={left, font=bfseries},
task description/.style={text width=#3, right, draw=none,
font=sffamily, xshift=#2,
minimum height=2em},
gantt bar/.style={draw=black, fill=blue!30},
help lines/.style={draw=black!30, dashed},
x=pgfmathresult pt
}
deftotalmonths{#4}
node (Header) [task description] at (0,0) {textbf{large Task Description}};
begin{scope}[shift=($(Header.south east)$)]
foreach x in {1,...,#4}
node[above] at (x,0) {pgfmathparse{int(x+#5)}footnotesizepgfmathresult};
end{scope}
}

% This macro adds a task to the diagram
% #1 Number of the task
% #2 Task's name
% #3 Starting date of the task (month's number, can be non-integer)
% #4 Task's duration in months (can be non-integer)
defTask#1#2#3#4{%
node[task number] at ($(Header.west) + (0, -#1)$) {#1};
node[task description] at (0,-#1) {#2};
begin{scope}[shift=($(Header.south east)$)]
draw (0,-#1) rectangle +(totalmonths, 1);
foreach x in {1,...,totalmonths}
draw[help lines] (x,-#1) -- +(0,1);
filldraw[gantt bar] ($(#3, -#1+0.2)$) rectangle +(#4,0.6);
end{scope}
}

% Example
begin{document}
thispagestyle{empty}
begin{tikzpicture}
GanttHeader{.8textwidth}{2ex}{4cm}{15}{2003}
Task{1}{Requirement analysis}{0}{3}
Task{2}{Devise an abstract}{0.5}{1}
Task{3}{Develop interfaces}{3}{3}
Task{4}{Adapt existing}{4.5}{3}
Task{5}{Implement and evaluate}{5}{4.5}
Task{6}{Specify Phase II design}{8}{3}
Task{7}{Prepare final report}{11}{1}
end{tikzpicture}
end{document}


enter image description here






share|improve this answer
























  • Marvelous! Thank you <3

    – JohnDoe
    Jan 12 at 23:21











  • @JohnDoe Your welcome! (I updated your nice question also after I realized that you made it an MWE.)

    – marmot
    Jan 12 at 23:22














3












3








3







I agree with Alan Munn that you will be much better off if you use pgfgantt. Just in case we can't convince you, you may try



documentclass{article}
usepackage[a4paper,landscape,margin=3cm]{geometry}
usepackage{tikz}
usetikzlibrary{calc}

% GanttHeader setups some parameters for the rest of the diagram
% #1 Width of the diagram
% #2 Width of the space reserved for task numbers
% #3 Width of the space reserved for task names
% #4 Number of months in the diagram
% #5 Start year
% In addition to these parameters, the layout of the diagram is influenced
% by keys defined below, such as y, which changes the vertical scale
defGanttHeader#1#2#3#4#5{%
pgfmathparse{(#1-#2-#3)/#4}
tikzset{y=7mm, task number/.style={left, font=bfseries},
task description/.style={text width=#3, right, draw=none,
font=sffamily, xshift=#2,
minimum height=2em},
gantt bar/.style={draw=black, fill=blue!30},
help lines/.style={draw=black!30, dashed},
x=pgfmathresult pt
}
deftotalmonths{#4}
node (Header) [task description] at (0,0) {textbf{large Task Description}};
begin{scope}[shift=($(Header.south east)$)]
foreach x in {1,...,#4}
node[above] at (x,0) {pgfmathparse{int(x+#5)}footnotesizepgfmathresult};
end{scope}
}

% This macro adds a task to the diagram
% #1 Number of the task
% #2 Task's name
% #3 Starting date of the task (month's number, can be non-integer)
% #4 Task's duration in months (can be non-integer)
defTask#1#2#3#4{%
node[task number] at ($(Header.west) + (0, -#1)$) {#1};
node[task description] at (0,-#1) {#2};
begin{scope}[shift=($(Header.south east)$)]
draw (0,-#1) rectangle +(totalmonths, 1);
foreach x in {1,...,totalmonths}
draw[help lines] (x,-#1) -- +(0,1);
filldraw[gantt bar] ($(#3, -#1+0.2)$) rectangle +(#4,0.6);
end{scope}
}

% Example
begin{document}
thispagestyle{empty}
begin{tikzpicture}
GanttHeader{.8textwidth}{2ex}{4cm}{15}{2003}
Task{1}{Requirement analysis}{0}{3}
Task{2}{Devise an abstract}{0.5}{1}
Task{3}{Develop interfaces}{3}{3}
Task{4}{Adapt existing}{4.5}{3}
Task{5}{Implement and evaluate}{5}{4.5}
Task{6}{Specify Phase II design}{8}{3}
Task{7}{Prepare final report}{11}{1}
end{tikzpicture}
end{document}


enter image description here






share|improve this answer













I agree with Alan Munn that you will be much better off if you use pgfgantt. Just in case we can't convince you, you may try



documentclass{article}
usepackage[a4paper,landscape,margin=3cm]{geometry}
usepackage{tikz}
usetikzlibrary{calc}

% GanttHeader setups some parameters for the rest of the diagram
% #1 Width of the diagram
% #2 Width of the space reserved for task numbers
% #3 Width of the space reserved for task names
% #4 Number of months in the diagram
% #5 Start year
% In addition to these parameters, the layout of the diagram is influenced
% by keys defined below, such as y, which changes the vertical scale
defGanttHeader#1#2#3#4#5{%
pgfmathparse{(#1-#2-#3)/#4}
tikzset{y=7mm, task number/.style={left, font=bfseries},
task description/.style={text width=#3, right, draw=none,
font=sffamily, xshift=#2,
minimum height=2em},
gantt bar/.style={draw=black, fill=blue!30},
help lines/.style={draw=black!30, dashed},
x=pgfmathresult pt
}
deftotalmonths{#4}
node (Header) [task description] at (0,0) {textbf{large Task Description}};
begin{scope}[shift=($(Header.south east)$)]
foreach x in {1,...,#4}
node[above] at (x,0) {pgfmathparse{int(x+#5)}footnotesizepgfmathresult};
end{scope}
}

% This macro adds a task to the diagram
% #1 Number of the task
% #2 Task's name
% #3 Starting date of the task (month's number, can be non-integer)
% #4 Task's duration in months (can be non-integer)
defTask#1#2#3#4{%
node[task number] at ($(Header.west) + (0, -#1)$) {#1};
node[task description] at (0,-#1) {#2};
begin{scope}[shift=($(Header.south east)$)]
draw (0,-#1) rectangle +(totalmonths, 1);
foreach x in {1,...,totalmonths}
draw[help lines] (x,-#1) -- +(0,1);
filldraw[gantt bar] ($(#3, -#1+0.2)$) rectangle +(#4,0.6);
end{scope}
}

% Example
begin{document}
thispagestyle{empty}
begin{tikzpicture}
GanttHeader{.8textwidth}{2ex}{4cm}{15}{2003}
Task{1}{Requirement analysis}{0}{3}
Task{2}{Devise an abstract}{0.5}{1}
Task{3}{Develop interfaces}{3}{3}
Task{4}{Adapt existing}{4.5}{3}
Task{5}{Implement and evaluate}{5}{4.5}
Task{6}{Specify Phase II design}{8}{3}
Task{7}{Prepare final report}{11}{1}
end{tikzpicture}
end{document}


enter image description here







share|improve this answer












share|improve this answer



share|improve this answer










answered Jan 12 at 21:57









marmotmarmot

95.1k4110210




95.1k4110210













  • Marvelous! Thank you <3

    – JohnDoe
    Jan 12 at 23:21











  • @JohnDoe Your welcome! (I updated your nice question also after I realized that you made it an MWE.)

    – marmot
    Jan 12 at 23:22



















  • Marvelous! Thank you <3

    – JohnDoe
    Jan 12 at 23:21











  • @JohnDoe Your welcome! (I updated your nice question also after I realized that you made it an MWE.)

    – marmot
    Jan 12 at 23:22

















Marvelous! Thank you <3

– JohnDoe
Jan 12 at 23:21





Marvelous! Thank you <3

– JohnDoe
Jan 12 at 23:21













@JohnDoe Your welcome! (I updated your nice question also after I realized that you made it an MWE.)

– marmot
Jan 12 at 23:22





@JohnDoe Your welcome! (I updated your nice question also after I realized that you made it an MWE.)

– marmot
Jan 12 at 23:22


















draft saved

draft discarded




















































Thanks for contributing an answer to TeX - LaTeX Stack Exchange!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f469882%2fgantt-chart-how-to-change-months-to-years%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Mario Kart Wii

What does “Dominus providebit” mean?

Antonio Litta Visconti Arese