I want to create a diagram which will show a timeline, and at certain points of the timeline I want to annotate with text and/or a diagram.

Cue ASCII art...

                Event in March
2008         /                                                    2009

I'd like something like this (a bit nicer though ;-D), where I can declare the start and end times. I would prefer to work in declarations of time periods/events rather than drawing them myself. The diagram is going to be included in a LaTeX report, so that kind of style is what I'm after, a package for LaTeX that does this would be ideal. However, I would like suggestions for tools that make it easy to draw this kind of thing manually too.

Is there a program I can use on Linux that fits the bill?

EDIT: I don't know what the community thinks about duplicates across superuser/StackOverflow sites (this unsearched for answer already existed on StackOverflow), but I don't have the rep to close my own question...

10 Answers 10


The free GanttProject (Java) can make some nice looking timelines.

alt text

  • A Gantt chart is not a timeline.
    – Geoffrey
    Nov 16, 2011 at 20:08
  • 2
    close enough for many uses Nov 22, 2011 at 9:20

If you want to save yourself all the programming work there is a website called Dipity.com that you can use create timelines with.

Or if you like to program and know a little XML and Javascript there is the SIMILE project from MIT has a neat Javascript browser based project called Timeline that allows you to use a simple XML format as input for displaying a timeline.

You said that you would "prefer to work in declarations of time periods/events rather than drawing them myself", and SIMILE Timeline seems like a good way to do that.

(You don't even have to draw it, just enter the data).

Both of these work on Linux/Windows/Mac whatever you want.

  • 1
    +1 for suggesting the MIT Timeline project -- that seems very useful!
    – wjl
    Sep 4, 2011 at 20:53
  • Woah the SIMILE Timeline seems rather dead and the documentation really needs work since about 2010. Not sure whether I want to suffer. Nov 1, 2014 at 18:00
  • I will try thetimelineproj.sourceforge.net (written in Python, GPLv3) as there is no requirement to make the timeline visible in a browser. Nov 1, 2014 at 18:10

Dia is a program to create diagrams on Linux, it's similar in practice to Visio.

Dia is roughly inspired by the commercial Windows program 'Visio,' though more geared towards informal diagrams for casual use. It can be used to draw many different kinds of diagrams. It currently has special objects to help draw entity relationship diagrams, UML diagrams, flowcharts, network diagrams, and many other diagrams. It is also possible to add support for new shapes by writing simple XML files, using a subset of SVG to draw the shape.

enter image description here


Than newer versions of Gnuplot are capable of handling timeline scales and can create annotations as well. It is originally a scientific plotting program, and can generate output in many formats including .png and .eps, so you can embed the results easily in LaTeX (it has a dedicated LaTeX output, which I am not familiar with). It has a quiet good and thorough documentation, plenty of settings and you can execute scripts in batch mode. You can even create a gnuplot script with a sheabang (#!) syntax.


Does this timetable example in PGF/TikZ look the way you like? PGF/TikZ is a LaTeX library so you can roll your own if you are proficient in LaTeX - see e.g. this post for the beginnings of a Gantt chart module.

  • Not quite, I'd like a horizontal axis to represent time; I couldn't tell if the packages list would allow that. Aug 24, 2009 at 19:24

In LaTeX you could try the tikz-package. Here is some example-code:

    \caption{some caption}
        \draw (0cm, 0cm) -- (15cm, 0cm);
        \foreach \x in {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15} \draw (\x cm, 3pt) -- (\x cm, - 3pt);
        \draw (0cm - 3pt, 0cm + 3pt) -- (0cm, 0cm) -- (0cm + 3pt, 0cm + 3pt);
        \draw (0cm, 0cm) node[above=5pt] {0};
        \draw (5cm, 0cm) node[above=5pt] {100};
        \draw (10cm, 0cm) node[above=5pt] {200};
        \draw (15cm, 0cm) node[above=5pt] {300};
        \fill (12cm, 0cm) circle (2pt);\draw (12cm, 0cm) node[above=5pt] {some text};

That creates a nice horizontal timeline.


Have you tried either of the existing LaTeX packages designed precisely for this, viz., timeline or chronology?


OpenOffice can do a decent timeline. Create a table 8 rows high and the number of items you have plus 3 columns wide - so if you had 17 items to put in your timeline, you would make a table 8 rows high and 20 columns wide. Set all cell borders to none. Merge the top two and top bottom two rows of cells, four at a time. Merge the two middle rows two cells at a time. You can use the cell borders drawing button to draw lines to individual cells. This is all much easier as a picture rather than trying to explain:

alt text

Your dates or times go in the two-cell boxes in the middle, anything you like goes in the four-cell boxes above and below. I know it's not LaTeX, although I'm sure you can get LaTeX to layout a table in a similar fashion. You could, of course, export the diagram as an image from OpenOffice to include in your LaTeX document.

  • 6
    jpg makes baby jesus cry :(
    – LiraNuna
    Aug 28, 2009 at 8:05
  • "although I'm sure you can get LaTeX to layout a table in a similar fashion" - seriously.
    – sehe
    Jun 1, 2012 at 14:24

I once wrote a gnuplot script to plot FM radio station frequencies along an axis from 87MHz to 108MHz, using the names of each radio station as vertical labels. Your ascii drawing looks very similar to my result. You can have a look at the script.


You could use Creately or Creately Desktop to help you draw Gantt Charts or timelines.

Lot less time fiddling around as the timeline and due dates can be just put in and the unit of time can be configured. Then just draw the bars or lines.

Can export as vector to be put into LaTex I suppose.

Creately Timeline Diagram

Not the answer you're looking for? Browse other questions tagged .