MathGroup Archive 2011

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Plot Legends For Side By Side Graphs

  • To: mathgroup at smc.vnet.net
  • Subject: [mg123372] Re: Plot Legends For Side By Side Graphs
  • From: Armand Tamzarian <mike.honeychurch at gmail.com>
  • Date: Sun, 4 Dec 2011 02:51:34 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <jbcpff$bjg$1@smc.vnet.net>

On Dec 3, 8:17 pm, Brentt <brenttnew... at gmail.com> wrote:
> Hello, I want to produce a plot legend for two Plots, with the same scale=
,
> placed side by side using GraphicsGrid, to export and put in a document.
> Both graphs the same legend, so I only want one legend for both graphs.
> I've been using the "PlotLegends" package but it has some constraints I
> can't figure out how to work around.
>
> I want the legend keys to take on the color of the curves automatically.
> Using the PlotLegend option does this automatically, but it needs to be a=
n
> option in both plots, so I either duplicate the same legend for both plot=
s,
> or the scaling of the plot that I generate the legend for is botched if I
> only generate the legend for one plot.
>
> I've tried using the Legend function to generate a legend in order  to
> expor it to a seperate image file to be placed in the document
> independently.  There doesn't seem to be a way to have the keys take on=
 the
> curve colors automatically, as the PlotLegends option does.
>
> Is there a way to produce one legend for two plots without messing up the
> scaling of the plot, or to use Legend to generate keys that automatically
> take on the colors of the curves they correspond to?

I'd steer clear of the legends package. And to be honest I don't
remember seeing any stuff coming out of Wolfram that uses it.
Having said that, here is a basic solution which may get you started:

stuffToPlot = {Sin[x], Tan[x]};
namesofStuffPlotted = {"Sin", "Tan"};

legend = MapIndexed[
   Row[{Spacer[10],
      Graphics[{AbsoluteThickness[2], ColorData[1, First[#2]],
        Line[{{0, 0}, {1, 0}}]}, AspectRatio -> 0.1, ImageSize -> 30],
       Spacer[5], #1}] &, namesofStuffPlotted];

Labeled[
 GraphicsGrid[{
   {Plot[stuffToPlot, {x, 0, 6}], Plot[stuffToPlot, {x, 0, 6}]}
   }],
 Row@legend, {{Bottom, Center}}]

For a vertical legend just replace Row with Column. If you are using
your own set of colours instead of the indexed ones then you would
need to use MapThread instead of MapIndexed. If you want swatches
instead of lines use Rectangle ...and so on.

Mike



  • Prev by Date: Re: Delete close, but not identical elements in an array
  • Next by Date: Re: How to simplify ArcSin formula
  • Previous by thread: Plot Legends For Side By Side Graphs
  • Next by thread: Re: Plot Legends For Side By Side Graphs