Как присвоить заголовок PlotLegends?

Sep 12 2020

Я хочу дать название сюжету, который я использую. Я получаю решение здесь , который говорит использовать PlotLegends -> SwatchLegend[{0, 3.3, 6.7, 10, 13, 17, 20}, LegendLabel -> "mu"]. Но я также хочу разместить легенды там, где я хочу использовать PlotLegends -> Placed[Range[1, 6, 1], {0.2, 0.3}].

Как я могу сделать и то, и другое?

Изменить: как только был дан ответ, упаковка работает, но проблема все еще существует, т.е. мой сюжет выглядит так:

Где я хочу назвать легенды как «H». Но когда я делаю эту штуку с Swatchlegend, она становится такой:

Я хочу, чтобы маркеры и цвета оставались такими же. Что мне делать?

Ответы

4 TimLaska Sep 12 2020 at 02:01

Вы, вероятно, ищете PointLegend, но вам следует предоставить более подробную информацию, чтобы другие могли воспроизвести ваши результаты.

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

Легенду можно обернуть вокруг надписи Placed. Вот пример, измененный из документации SwatchLegend:

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

Вы можете использовать PlotLegends - > Placed[labels, Top, Labeled[#, legendlabel, Top] &].

Используя пример ввода из ответа Тима Ласки:

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] &]]

Вы можете еще больше украсить внешний вид, используя третий аргумент 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}}] &]]