Thank you guys for all the answers. All were very helpfull and taught me something. Based on Bob Hanlon's and Edmund's answers I came up with this function:
goodLookingPlot[functions_List] :=
Block[{t, legend, collors, markers, toPlot}, (
t = Table[i, {i, Length@functions}];
dummyPlot =
DiscretePlot[Evaluate@t, {x, 0, 1, .5}, Joined -> True,
PlotTheme -> "Scientific", ImageSize -> Large, Filling -> None,
PlotMarkers -> {Automatic, 15}, PlotStyle -> Opacity[.999],
PlotLegends ->
LineLegend[functions, LegendLayout -> {"Column", 2},
LegendMarkerSize -> 18, Spacings -> {0.2, 0.2}]];
legend = dummyPlot[[2, 1]];
markers =
Table[dummyPlot[[1, 1, 1, 2, i, 1, 2, 3, 1, 1]], {i,
Length@dummyPlot[[1, 1, 1, 2]]}];
collors =
Table[dummyPlot[[1, 1, 1, 2, i, 1, 1, 2]], {i,
Length@dummyPlot[[1, 1, 1, 2]]}];
toPlot =
Table[{functions[[i]], i, collors[[i]], markers[[i]]}, {i,
Length@functions}];
Return@
Show[Plot[functions, {x, 0, 10}, PlotTheme -> "Scientific",
ImageSize -> Large],
DiscretePlot[#[[1]], {x, Range[0, 6, 2] + #[[2]]/3},
PlotStyle -> Directive[#[[3]], Opacity[.75]],
PlotMarkers -> {#[[4]], 25}, Filling -> None,
PlotTheme -> "Scientific", ImageSize -> Large] & /@ toPlot,
Epilog -> Inset[legend, {9, 2}]]
);]
So the command bellow gives the following result:
func = Prepend[Table[(2 i + x^2)^(1/2), {i, 0, 4}], x];
goodLookingPlot[func]
Notice that two curves overlap completely, but their symbols make it clear that we have six curves here and not five.
I used both 'Plot' and 'DiscretePlot'. The first was to get the curves to look smooth without clutering the graph with too many symbols. The second was added to make sure I had a few symbols there.
I am not proud for using "dummyplot" to steal its legend, symbols and collors. I opted to do so so that I could keep using Mathematica's automatic styles.
PlotMarkers
documentation. $\endgroup$