Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

I've asked this question in Wolfram community and have not received a response.

I am wondering why when I use Show to combine 6 plots, the plot legend does not show in order? The order should be 150, 250, 350, 450, 550, 650. However when I step through Show adding one plot at a time, I notice that Mathematica does something weird with the order of the legend, and in the end the order is 650, 150, 250, 350, 450, 550. How can I get the order of the Legend or Show to be correct, such that there is a logical sequence of the label? I have attached some code below to show what's happening:

 data = {
     {0., 23.1628, 15., 12., 5., 2., .75, 0.0},
     {0., 53.611, 100., 83.27448, 40., 33., 25., 10.0},
     {0., 71.7055, 100., 79, 72.996, 30.76314, 17., 15.},
     {0., 71.92428, 100., 100, 83.35182, 41.09816, 35., 10.0},
     {0., 75.87498, 100., 100., 88.65755, 87.0691, 34.27131, 20.},
     {0., 100., 100., 100., 88.65755, 87.0691, 80.4311, 39.40}
     } // TableForm;

time = {0., 120., 300., 600., 900., 1200., 1500., 1800.};

activity = Table[Transpose[{time, data[[1, i]]}], {i, 1, 6}];

tickSpecs = {{{0, "0"}, {120, "2"}, {300, "5"}, {600, "10"}, {900,
     "15"}, {1200, "20"}, {1500, "25"}, {1800, "30"}}, Automatic};

label = {"150 ", "250 ", "350 ", "450 ", "550 ", "650 "};
colors = {Black, Red, Orange, Green, Blue, Purple, Magenta};


Plots = Table[
     ListPlot[activity[[i]],

    PlotRange -> All,

    PlotStyle -> {Darker[colors[[i]]], Dashing[{0.05}], Thick,
      AbsolutePointSize[12]},
    Joined -> True,
    Mesh -> All,
    Ticks -> {Automatic, None},
    FrameTicks -> tickSpecs,
    Frame -> {Left, Bottom},
    FrameStyle -> Thick,
    Axes -> False,
    LabelStyle -> {FontSize -> 20, FormatType -> Bold},
    ImageSize -> 450,
    PlotLegends ->
     LineLegend[{label[[i]]},
      LabelStyle -> Directive[Bold, 15],
      LegendMarkerSize -> Automatic]],
{i, 1, 6}];

Show[Plots]
share|improve this question

3 Answers 3

up vote 2 down vote accepted

Also, without the fuss of tables and Showand disregarding unnecessary options:

ListLinePlot[activity,
 FrameTicks -> tickSpecs, 
 Frame -> {Left, Bottom}, FrameStyle -> Thick, Axes -> False, 
 LabelStyle -> {FontSize -> 20, FormatType -> Bold}, 
 PlotStyle -> (Directive[Darker@#, Dashing[{0.05}], Thick] & /@ colors), 
 PlotLegends -> LineLegend[label, LabelStyle -> Directive[Bold, 15]], 
 PlotMarkers -> ({Graphics[{Darker@#, Disk[]}], .05} & /@ colors)]

Mathematica graphics

share|improve this answer

I've run into several issues like this with the legends and quite frankly, trying to investigate the cause/fix it is probably more trouble than worth. Instead, here's a work around:

(* Your code without the legends *)
Plots = Table[
   ListPlot[activity[[i]], PlotRange -> All, 
    PlotStyle -> {Darker[colors[[i]]], Dashing[{0.05}], Thick, 
      AbsolutePointSize[12]}, Joined -> True, Mesh -> All, 
    Ticks -> {Automatic, None}, FrameTicks -> tickSpecs, 
    Frame -> {Left, Bottom}, FrameStyle -> Thick, Axes -> False, 
    LabelStyle -> {FontSize -> 20, FormatType -> Bold}, 
    ImageSize -> 450], {i, 1, 6}];

(* Construct legends separately *)
Row[{
    Show[Plots],
    LineLegend[Directive@{Darker@#, Thick, Dashing[{0.05}]} & /@ Most@colors, label, 
        LabelStyle -> Directive[Bold, 15], LegendMarkerSize -> Automatic]
}]

I think this might be a bug, since this errant behaviour does not occur in Mathematica 10 on the Raspberry Pi.

share|improve this answer
    
Great! Thank you, The work around works great, and also helps me with more exposure to functional programming! –  tarhawk Mar 24 at 16:33

You can do a simple manual fix like so :-

Show[Extract[Plots, {{5}, {4}, {3}, {2}, {1}, {6}}]]

enter image description here

share|improve this answer
    
Okay great! Thank you! –  tarhawk Mar 24 at 16:32

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.