Skip to main content
updated based on the comments
Source Link

I am generating plots with the plots with plot legends. I want plot legends to be on the top of the figure as I can not sacrifice the horizontal space.

When the plot is generated with

Plot[{x, 2 x, 3 x, 4 x, 5 x, 6 x, 7 x, 8 x, 9 x, 10 x}, {x, 1, 10}, PlotLegends -> Placed["Expressions", Top]]

the plot legends are aligned well at the top in two rows accroding to the image width as shown below.

enter image description here

When plotting carried separately for each case and combined, they could not align according to the image width in spite of image width provided in each.

exp = Table[i x, {i, 1, 10, 1}]
{p1, p2, p3, p4, p5, p6, p7, p8, p9, p10} =  Table[Plot[exp[[i]], {x, 1, 0},
PlotLegends -> Placed[{ToString[exp[[i]]]}, Top], 
PlotStyle -> ColorData[3, "ColorList"][[i]], 
ImageSize -> 300], {i, 1, 10}];
Show[p1, p2, p3, p4, p5, p6, p7, p8, p9, p10]

The plot of the second case is enter image description here

I searched in stack exchange but could find similar problem asked before, but with contour plot q1 and q2. Please suggest a method to overcome the problem.

Thank you.

PS: I could not follow the first case as the plots in my case are from plot and listplot.

Update:

@Rom38 Thank you for your suggestion. But I could not succeed with that option with my knowledge. While looking mathematica documentation for legended, I got this idea.

legend1 = TableForm[{Table[
 LineLegend[{ColorData[3, "ColorList"][[i]]}, {ToString[
    exp[[i]]]}], {i, 1, 4}]}];
legend2 = TableForm[{Table[
 LineLegend[{ColorData[3, "ColorList"][[i]]}, {ToString[
    exp[[i]]]}], {i, 5, 8}]}];
legend3 = TableForm[{Table[
 LineLegend[{ColorData[3, "ColorList"][[i]]}, {ToString[
    exp[[i]]]}], {i, 9, 10}]}];
legend4 = TableForm[{legend1, legend2, legend3}, TableAlignments -> Center] (*This generated the desired form for the legends*)

The plots are generated using

plots = Table[Plot[exp[[i]], {x, 1, 0},PlotStyle -> ColorData[3, "ColorList"][[i]], ImageSize -> 300], {i, 1, 10}];
Legended[Show[plots], Placed[legend4, Top]]

new plot with custom legends

I know that this not a straight path for solving this problem.

I am generating plots with the plots with plot legends. I want plot legends to be on the top of the figure as I can not sacrifice the horizontal space.

When the plot is generated with

Plot[{x, 2 x, 3 x, 4 x, 5 x, 6 x, 7 x, 8 x, 9 x, 10 x}, {x, 1, 10}, PlotLegends -> Placed["Expressions", Top]]

the plot legends are aligned well at the top in two rows accroding to the image width as shown below.

enter image description here

When plotting carried separately for each case and combined, they could not align according to the image width in spite of image width provided in each.

exp = Table[i x, {i, 1, 10, 1}]
{p1, p2, p3, p4, p5, p6, p7, p8, p9, p10} =  Table[Plot[exp[[i]], {x, 1, 0},
PlotLegends -> Placed[{ToString[exp[[i]]]}, Top], 
PlotStyle -> ColorData[3, "ColorList"][[i]], 
ImageSize -> 300], {i, 1, 10}];
Show[p1, p2, p3, p4, p5, p6, p7, p8, p9, p10]

The plot of the second case is enter image description here

I searched in stack exchange but could find similar problem asked before, but with contour plot q1 and q2. Please suggest a method to overcome the problem.

Thank you.

PS: I could not follow the first case as the plots in my case are from plot and listplot.

I am generating plots with the plots with plot legends. I want plot legends to be on the top of the figure as I can not sacrifice the horizontal space.

When the plot is generated with

Plot[{x, 2 x, 3 x, 4 x, 5 x, 6 x, 7 x, 8 x, 9 x, 10 x}, {x, 1, 10}, PlotLegends -> Placed["Expressions", Top]]

the plot legends are aligned well at the top in two rows accroding to the image width as shown below.

enter image description here

When plotting carried separately for each case and combined, they could not align according to the image width in spite of image width provided in each.

exp = Table[i x, {i, 1, 10, 1}]
{p1, p2, p3, p4, p5, p6, p7, p8, p9, p10} =  Table[Plot[exp[[i]], {x, 1, 0},
PlotLegends -> Placed[{ToString[exp[[i]]]}, Top], 
PlotStyle -> ColorData[3, "ColorList"][[i]], 
ImageSize -> 300], {i, 1, 10}];
Show[p1, p2, p3, p4, p5, p6, p7, p8, p9, p10]

The plot of the second case is enter image description here

I searched in stack exchange but could find similar problem asked before, but with contour plot q1 and q2. Please suggest a method to overcome the problem.

Thank you.

PS: I could not follow the first case as the plots in my case are from plot and listplot.

Update:

@Rom38 Thank you for your suggestion. But I could not succeed with that option with my knowledge. While looking mathematica documentation for legended, I got this idea.

legend1 = TableForm[{Table[
 LineLegend[{ColorData[3, "ColorList"][[i]]}, {ToString[
    exp[[i]]]}], {i, 1, 4}]}];
legend2 = TableForm[{Table[
 LineLegend[{ColorData[3, "ColorList"][[i]]}, {ToString[
    exp[[i]]]}], {i, 5, 8}]}];
legend3 = TableForm[{Table[
 LineLegend[{ColorData[3, "ColorList"][[i]]}, {ToString[
    exp[[i]]]}], {i, 9, 10}]}];
legend4 = TableForm[{legend1, legend2, legend3}, TableAlignments -> Center] (*This generated the desired form for the legends*)

The plots are generated using

plots = Table[Plot[exp[[i]], {x, 1, 0},PlotStyle -> ColorData[3, "ColorList"][[i]], ImageSize -> 300], {i, 1, 10}];
Legended[Show[plots], Placed[legend4, Top]]

new plot with custom legends

I know that this not a straight path for solving this problem.

edited title
Link
user64494
  • 29.1k
  • 4
  • 29
  • 56

overflow Overflow of plot legends in the combedcombined plot of separate plots

Source Link

overflow of plot legends in the combed plot of separate plots

I am generating plots with the plots with plot legends. I want plot legends to be on the top of the figure as I can not sacrifice the horizontal space.

When the plot is generated with

Plot[{x, 2 x, 3 x, 4 x, 5 x, 6 x, 7 x, 8 x, 9 x, 10 x}, {x, 1, 10}, PlotLegends -> Placed["Expressions", Top]]

the plot legends are aligned well at the top in two rows accroding to the image width as shown below.

enter image description here

When plotting carried separately for each case and combined, they could not align according to the image width in spite of image width provided in each.

exp = Table[i x, {i, 1, 10, 1}]
{p1, p2, p3, p4, p5, p6, p7, p8, p9, p10} =  Table[Plot[exp[[i]], {x, 1, 0},
PlotLegends -> Placed[{ToString[exp[[i]]]}, Top], 
PlotStyle -> ColorData[3, "ColorList"][[i]], 
ImageSize -> 300], {i, 1, 10}];
Show[p1, p2, p3, p4, p5, p6, p7, p8, p9, p10]

The plot of the second case is enter image description here

I searched in stack exchange but could find similar problem asked before, but with contour plot q1 and q2. Please suggest a method to overcome the problem.

Thank you.

PS: I could not follow the first case as the plots in my case are from plot and listplot.