Re: Legends for Plot's (solution)
- To: mathgroup at smc.vnet.net
- Subject: [mg102414] Re: Legends for Plot's (solution)
- From: Ben Shepherd <bjashepherd at mailinator.com>
- Date: Sat, 8 Aug 2009 04:39:51 -0400 (EDT)
- References: <h5bk30$hja$1@smc.vnet.net>
I rewrote the LineStylesFromTooltips function to work with unjoined
ListPlots as well, where just points are displayed:
LineStylesFromTooltips[plot_Graphics] :=
Cases[plot,
Tooltip[{s__, l_Point | l_Line}, tt_] :> Grid[{{Switch[Head@l,
Point,
Graphics[Flatten[{s, Point@{0, 0}}], ImageSize -> {4, 8},
AspectRatio -> 8/4, ImagePadding -> 0],
Line,
Graphics[Flatten[{s, Line[{{0, 0}, {1, 0}}]}],
ImageSize -> {24, 8}, AspectRatio -> 8/24,
ImagePadding -> 0]], tt}}], Infinity];
Thanks very much for this - it looks loads better than the default
PlotLegend!
ben
(to reply directly, mailinator -> gmail)
On 5 Aug, 10:40, dr DanW <dmaxwar... at gmail.com> wrote:
> The PlotLegends` package is badly dated and creates unattractive
> legends. InMathematica7, there is support for very attractive
> legends, but only for the new Chart types. The mechanism is a little
> different than in PlotLegends. Legends are implemented by placing the
> wrapper Legended[] around the data being plotted. The chart function
> knows to ignore Legended[] except when looking forlegendtext.
>
> On the other hand, Plot[] knows nothing about Legended[], and will not
> recognize anything in that wrapper as data. Plot[] does recognize the
> Tooltip[] wrapper, however.
>
> Below is code that will create an attractivelegendout of any
> Tooltip'ed curve in a Plot. This will only work on lines, not
> markers, so if you use it on ListPlot, make sure Joined->True. The
> main function is LineLegendFromTooltips[].
>
> Usage example:
> LineLegendFromTooltips[ Plot[{Tooltip[x,"x"], Tooltip[x^2,"x^2"]},{x,
> 0,3} ] ]
>
> -------code------------
> LineStylesFromTooltips[plot_Graphics] :=
> Cases[plot, Tooltip[{s__, l_Line}, tt_] :>
> Grid[{{Graphics[Flatten[{s, Line[{{0, 0}, {1, 0}}]}],
> ImageSize -> {24, 8}, AspectRatio -> 8/24=
,
> ImagePadding -> 0],
> tt}}], Infinity]
>
> LineLegendFromTooltips[plot_Graphics] :=
> Labeled[plot, Style[Column[LineStylesFromTooltips[plot]], "TR",
> ShowStringCharacters -> False], Right]
>
> -----end code-------
>
> I sincerely hope this function will be unnecessary in version 8.0.
>
> Daniel