I am working with some GPS data for a bike trip I am going on. All the routes are given so it's easy to simply follow the line on your GPS.
I am looking for a way to visually summarize information simply for a quick overview and some "diversion" while riding.
Using the GPS data from a section of the route, I created a list of distances and elevations. Plotting that gives a nice overview of this part of the ride.
ListLinePlot[Transpose[{absoluteDistances/1000., elevations}],
Filling -> Axis, PlotRange -> {Automatic, {1000, Max[elevations]}},
AspectRatio -> 0.3]
That's a really nice summary, but it would be also really nice to have some information about stuff along the way, label the high points, etc.
Something like....(which I modified manually)
My question specifically would be, given a list of distances and elevations for a ListLinePlot, how could I then create a "points of interest" list , for example,
POI = {{15, "Bridge"}, {48, "Parking Lot"}}
and get Mathematica to create my modified plot?
Update
I appreciate the comments I have gotten so far!
As I worked on this, found all kinds of weird things, the GPS data was given partially in m, and partially in km, maybe there is an easy way to deal with that... I messed around and figured out how to change them all to km.
Next issue was that when I wanted to draw a line, say, at 15.3 km, there could potentially be several entries in the GPS list around there, so I had to decide where to put the line. I again messed around, pulled out all entries close to 15.3 km, then took the MINIMUM elevation of all the entries simply because the line drawn looked the best.
I appreciate the answer given that used a plot offset. I decided to put the labels "in" the profile to avoid that problem.
I have a reasonable graph now, but my work, if you call it that, is messy. So I will continue to watch the answers!
I defined two functions, makeText and makeLine
Here is a sample line of made up "points of interest"
poi = {{8.3, "Trailhead"}, {12.6, "Parking"}, {40, "Gate"}, {60,
"Creek"}, {90.2, "Highway"}}
Then this command...
minElev = 1000;
ListLinePlot[pts,
Filling -> Axis,
PlotRange -> {Automatic, {minElev, Max[elevations]}},
AspectRatio -> 0.3,
ImageSize -> 800,
Epilog -> {
makeText /@ poi,
makeLine /@ poi}]
produces a reasonable plot
Epilog -> {Text[Style["Bridge", 14], {40,1400}], Line[{{40, 1100},{40,1400}}]}
and so forth. $\endgroup$