Wie erstelle ich PlotLegends einen Titel?

Sep 12 2020

Ich möchte den von mir verwendeten Plotlegenden einen Titel geben. Ich bekomme hier eine Lösung , die sagt, zu verwenden PlotLegends -> SwatchLegend[{0, 3.3, 6.7, 10, 13, 17, 20}, LegendLabel -> "mu"]. Ich möchte aber auch die Legenden dort platzieren, wo ich sie gerne verwenden möchte PlotLegends -> Placed[Range[1, 6, 1], {0.2, 0.3}].

Wie kann ich beides machen?

Bearbeiten: Als die Antwort gegeben wurde, funktioniert die Verpackung, aber es gibt immer noch ein Problem, dh meine Handlung sieht so aus:

Wo ich die Legenden als "H" bezeichnen möchte. Aber wenn ich das Swatchlegend-Ding mache, wird es so:

Ich möchte die Markierungen und Farben gleich halten. Was sollte ich tun?

Antworten

4 TimLaska Sep 12 2020 at 02:01

Sie suchen wahrscheinlich nach PointLegend, aber Sie sollten mehr Details angeben, damit andere Ihre Ergebnisse reproduzieren können.

mu = {0, 3.3, 6.7, 10, 13, 17, 20};
pl = PointLegend[mu, LegendLabel -> "mu", LegendFunction -> "Frame", 
   LegendLayout -> "Row", LegendMarkers -> Automatic];
fns = Table[n^(1/p), {p, 7}, {n, 10}];
ListLinePlot[fns, PlotMarkers -> Automatic, 
 PlotLegends -> Placed[pl, Top]]

3 tad Sep 12 2020 at 02:29

Sie können Placed um die Legende wickeln. Hier ist ein Beispiel, das aus der SwatchLegend-Dokumentation geändert wurde:

Plot[{Sin[x], Cos[x]}, {x, 0, 5}, 
   PlotLegends -> Placed[SwatchLegend[{"first", "second"}, 
LegendLabel -> "legend title"], {0.2, 0.3}]]

3 kglr Sep 12 2020 at 08:16

Sie können verwenden PlotLegends - > Placed[labels, Top, Labeled[#, legendlabel, Top] &].

Verwenden Sie die Beispieleingabe aus Tim Laskas Antwort:

mu = {0, 3.3, 6.7, 10, 13, 17, 20};
fns = Table[n^(1/p), {p, 7}, {n, 10}];

ListLinePlot[fns, PlotMarkers -> Automatic, 
 PlotLegends -> Placed[mu, Top, Labeled[#, Style["mu", 16], Top] &]]

Sie können das Erscheinungsbild mit dem dritten Argument weiter verschönern Placed:

ListLinePlot[fns, PlotMarkers -> Automatic, 
 PlotLegends -> Placed[mu, Top, Panel @ Labeled[#, Style["mu", 16], Top] &]]

ListLinePlot[fns, PlotMarkers -> Automatic, 
 PlotLegends ->  Placed[mu, Top, 
   Framed[#, FrameStyle -> Directive[Thin, Gray], 
       RoundingRadius -> 5, ImageMargins -> 5] & @
     Labeled[#, Style[Row[{Spacer[5], "mu"}], 24, "Section"], {{Top, Left}}] &]]