Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

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...

share|improve this question

9 Answers 9

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.

share|improve this answer
1  
+1 for suggesting the MIT Timeline project -- that seems very useful! –  wjl Sep 4 '11 at 20:53

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

alt text

share|improve this answer
    
A Gantt chart is not a timeline. –  systemovich Nov 16 '11 at 20:08
    
close enough for many uses –  Matthew Lock Nov 22 '11 at 9:20

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

share|improve this answer

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.

share|improve this answer

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.

share|improve this answer
    
Not quite, I'd like a horizontal axis to represent time; I couldn't tell if the packages list would allow that. –  Grundlefleck Aug 24 '09 at 19:24

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

\begin{figure*}[htbp]
	\caption{some caption}
	\begin{tikzpicture}
		\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};
	\end{tikzpicture}
\end{figure*}

That creates a nice horizontal timeline.

share|improve this answer

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

share|improve this answer
    

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.

share|improve this answer
5  
jpg makes baby jesus cry :( –  LiraNuna Aug 28 '09 at 8:05
    
"although I'm sure you can get LaTeX to layout a table in a similar fashion" - seriously. –  sehe Jun 1 '12 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.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.