# Plotting: Change colour scheme and line thickness at the same time

Some stylistic attributes of plots are independent of colour, e.g. thickness, dashing, etc.

I can make the lines thick in this plot without having to specify a separate style for each line:

Plot[Table[BesselJ[n, x], {n, 4}] // Evaluate, {x, 0, 10},
PlotStyle -> Thickness[0.01]]


I can also easily change the colour scheme:

Plot[Table[BesselJ[n, x], {n, 4}] // Evaluate, {x, 0, 10},
PlotStyle -> 98]


How can I change both the colour scheme and the line thickness (or dashing) at the same time, without having to specify a separate style for each plotted function?

The following works, but it is cumbersome and requires hard-coding the number of plotted functions (or putting in an arbitrary large number):

Plot[Table[BesselJ[n, x], {n, 4}] // Evaluate, {x, 0, 10},
PlotStyle -> (Directive[ColorData[98][#], Thickness[0.01]] & /@ Range[4])]


I know that I can do PlotStyle -> 98, PlotTheme -> "ThickLines", but that requires me to use a single pre-defined line thickness (or to choose from only a few). It does not allow me to set my own custom base plotting style with an arbitrary thickness and dashing specification.

You can use the (undocumented) Method suboption "DefaultPlotStyle" as a second place to specify plot styles:

Plot[Table[BesselJ[n, x], {n, 4}] // Evaluate, {x, 0, 10},
PlotStyle -> 98,
Method -> "DefaultPlotStyle" -> Thick
]


More generally, you could specify a list of directives in PlotStyle, and a common default in "DefaultPlotStyle":

Plot[Table[BesselJ[n, x], {n, 4}] // Evaluate, {x, 0, 10},
PlotStyle -> {Directive[Red, Dashed], Green, Blue,
Directive[Orange, DotDashed]},
Method -> "DefaultPlotStyle" -> Thick,
BaseStyle -> Dotted
]


Note however that this can interfere with PlotTheme, since themes use the same option to set common default styles. In case more control is needed, you could probably register a custom plot theme that sets the "DefaultColor", "DefaultThickness", etc. suboptions before they are merged into "DefaultPlotStyle" by ChartingResolvePlotTheme.

• What does the 98 in PlotStyle -> 98 mean? Are such numeric values for PlotStyle documented somewhere? – murray Feb 14 at 15:14
• @murray The 98 refers to the indexed colour schemes. ColorData[98]` should provide the same result. You can see the numbers for the colour schemes if you go into the "Palettes" menu > "Color Schemes". If you look at the "Indexed" palette, there are numbers associated with each one. – MassDefect Feb 14 at 16:45