Skip to main content
1 of 4
kglr
  • 400.5k
  • 18
  • 488
  • 929

You can use TemporalData to construct your input data and then use TimeSeriesRescale on individual time series to get a perspective look/feel:

numberofseries = 20;

tds = Table[TemporalData[Table[Sin[x + i] + 2*i, {x, 0, 10, 0.1}], {0, 10}],
   {i, numberofseries}];

ClearAll[xaxis]
xaxis[a_, b_] := {GrayLevel[.4], Thickness -> Absolute[0.2], 
     {Line[#[[{1, -1}]]], Line[{#, Offset[{0, -5}, #]}] & /@ #, 
      Text[#[[1]], Offset[{0, -15}, #]] & /@ #} & @ Thread[{Range[a, b], 0}]};

ListLinePlot[tds, ImageSize -> Large, Axes -> False, 
 Epilog -> xaxis[0, 10], AspectRatio -> 1/2, ImagePadding -> 20, 
 PlotRangeClipping -> False, Ticks -> {Range[0, 10], All}]

enter image description here

ClearAll[rescaleTD]
rescaleTD[ls_: .1, rs_: .1] := MapIndexed[TimeSeriesRescale[#, 
   Flatten[# /@ {"FirstTimes", "LastTimes"}] + {ls, rs} #2[[1]]] &, #] &;

Grid @ (ListLinePlot[#, ImageSize -> Medium, Axes -> False, 
       Epilog -> xaxis, AspectRatio -> 1/2, ImagePadding -> 20, 
       PlotRangeClipping -> False, 
       Ticks -> {Range[0, 10], All}] & /@ 
   { rescaleTD[#, #]@tds, rescaleTD[#, -#]@tds, rescaleTD[#, -#/2]@tds} & /@ {.1, .15, .2})

enter image description here

kglr
  • 400.5k
  • 18
  • 488
  • 929