Timeline Layout and Label Placements
Create timelines for famous people from the Romantic period.
In[1]:=
![Click for copyable input](assets.en/timeline-layout-and-label-placements/In_1.png)
romanticerapeople =
DeleteCases[
EntityValue[
Entity["HistoricalPeriod", "RomanticEra"][
"PeopleInvolved"], {"BirthDate", "DeathDate", "Name", "Image",
"Occupation"}], {__, _Missing}];
In[2]:=
![Click for copyable input](assets.en/timeline-layout-and-label-placements/In_2.png)
lifespan =
GroupBy[romanticerapeople,
Last -> (Tooltip[
Labeled[Interval@#[[1 ;; 2]], #[[3]], "StartBubble"],
Labeled[#[[4]], DateDifference[#[[1]], #[[2]], "Year"]]] &)];
Display each composer in his own row.
In[3]:=
![Click for copyable input](assets.en/timeline-layout-and-label-placements/In_3.png)
TimelinePlot[lifespan[{"composer"}], PlotLayout -> "Stacked",
LabelStyle -> 12, ImageSize -> 550,
PlotLabel -> "Romantic Era Composers", PlotTheme -> "Grid"]
Out[3]=
![](assets.en/timeline-layout-and-label-placements/O_1.png)
Use the minimum number of rows.
In[4]:=
![Click for copyable input](assets.en/timeline-layout-and-label-placements/In_4.png)
TimelinePlot[lifespan[{"composer"}], PlotLayout -> "Grouped",
LabelStyle -> 12, ImageSize -> 550,
PlotLabel -> "Romantic Era Composers", PlotTheme -> "Grid"]
Out[4]=
![](assets.en/timeline-layout-and-label-placements/O_2.png)
Place the label at the end of the time interval.
In[5]:=
![Click for copyable input](assets.en/timeline-layout-and-label-placements/In_5.png)
lifespan =
GroupBy[romanticerapeople,
Last -> (Tooltip[
Labeled[Interval@#[[1 ;; 2]], #[[3]], "EndBubble"],
Labeled[#[[4]], DateDifference[#[[1]], #[[2]], "Year"]]] &)];
In[6]:=
![Click for copyable input](assets.en/timeline-layout-and-label-placements/In_6.png)
TimelinePlot[lifespan[{"composer"}], LabelStyle -> 12,
ImageSize -> 550, PlotLabel -> "Romantic Era Composers",
PlotTheme -> "Grid"]
Out[6]=
![](assets.en/timeline-layout-and-label-placements/O_3.png)
When there are many data entries and limited space, place the labels after the intervals.
In[7]:=
![Click for copyable input](assets.en/timeline-layout-and-label-placements/In_7.png)
lifespan =
GroupBy[romanticerapeople,
Last -> (Tooltip[Labeled[Interval@#[[1 ;; 2]], #[[3]], After],
Labeled[#[[4]], DateDifference[#[[1]], #[[2]], "Year"]]] &)];
In[8]:=
![Click for copyable input](assets.en/timeline-layout-and-label-placements/In_8.png)
TimelinePlot[Values@lifespan, PlotLayout -> "Grouped",
LabelStyle -> 14, AspectRatio -> 1/1.2, ImageSize -> 450,
PlotLegends ->
LineLegend[Flatten@Keys[lifespan],
LegendLayout -> "ReversedColumn"], PlotTheme -> "Web"]
Out[8]=
![](assets.en/timeline-layout-and-label-placements/O_4.png)
Use a packed layout across the datasets.
In[9]:=
![Click for copyable input](assets.en/timeline-layout-and-label-placements/In_9.png)
TimelinePlot[Values@lifespan, PlotLayout -> "Packed",
LabelStyle -> 14, AspectRatio -> 1/1.2, ImageSize -> 450,
PlotLegends ->
LineLegend[Flatten@Keys[lifespan],
LegendLayout -> "ReversedColumn"], PlotTheme -> "Web"]
Out[9]=
![](assets.en/timeline-layout-and-label-placements/O_5.png)