up vote 8 down vote favorite
1
share [g+] share [fb]

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

link|improve this question
feedback

9 Answers

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.

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

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

alt text

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

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.

link|improve this answer
feedback

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.

link|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
feedback

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.

link|improve this answer
feedback

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.

link|improve this answer
5  
jpg makes baby jesus cry :( – LiraNuna Aug 28 '09 at 8:05
feedback

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.

link|improve this answer
feedback

there's a program called "dia",it creates diagrams on linux

link|improve this answer
feedback

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

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

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