How to set a specific PlotStyle option for all curves without changing default colors?

I have a 3D plot of dozens of random curves which have different colors by default. I want to keep the default colors but then I need all the curves to get a Thick style. If I use the option PlotStyle -> Thick, then all curves are turned to black. I know this should be very basic, but I don't get it!

Here's a MWE to show the issue:

vec[t_, x_, y_, z_] := {x t, y t, z t}

x0[n_] := RandomReal[{-10, 10}]
y0[n_] := RandomReal[{-10, 10}]
z0[n_] := RandomReal[{-10, 10}]

vectors[t_] := Table[vec[t, x0[n], y0[n], z0[n]], {n, 1, 10}]

randVectors = ParametricPlot3D[Evaluate@vectors[t], {t, -30, 30}, PlotStyle -> {Thick}];

Show[
randVectors,
PlotRange -> Automatic,
Axes -> None,
BoxStyle -> Thick,
SphericalRegion -> True,
Method -> {"RotationControl" -> "Globe"},
ImageSize -> {500, 500},
Background -> Black
]


The option PlotStyle -> {Thick} is causing the issue. So how can I have a thick style for all curves, and yet still get various colors for them? I need the default colors palette for the curves.

Try this

    vec[t_, x_, y_, z_] := {x t, y t, z t}

x0[n_] := RandomReal[{-10, 10}]
y0[n_] := RandomReal[{-10, 10}]
z0[n_] := RandomReal[{-10, 10}]

vectors[t_] := Table[vec[t, x0[n], y0[n], z0[n]], {n, 1, 10}];

styles = Table[{Hue[0.1*n], Thickness[0.005]}, {n, 1, 10}];

randVectors =
ParametricPlot3D[Evaluate@vectors[t], {t, -30, 30},
PlotStyle -> styles, Background -> Black, Boxed -> False,
Axes -> None]

Show[randVectors, PlotRange -> Automatic, SphericalRegion -> True,
Method -> {"RotationControl" -> "Globe"}, ImageSize -> {500, 500}]


Have fun!

• This is a great one. Love it!
– Cham
Jan 7, 2021 at 17:49

Ok, I've found the solution: Just use BaseStyle -> Thick, instead of PlotStyle -> Thick.

To simplify the generation of vectors

\$Version

(* "12.2.0 for Mac OS X x86 (64-bit) (December 12, 2020)" *)

Clear["Global*"]

vec[t_, x_, y_, z_] := {x t, y t, z t}

SeedRandom[1234];
xyz = RandomReal[{-10, 10}, {10, 3}];

randVectors = ParametricPlot3D[
Evaluate[vec[t, ##] & @@@ xyz], {t, -30, 30},
PlotStyle -> Thick];

Show[randVectors,
Axes -> None,
BoxStyle -> Thick,
SphericalRegion -> True,
Method -> {"RotationControl" -> "Globe"},
ImageSize -> {500, 500},
Background -> Black]


Another approach is to remove the thickness specifications from each line that were generated by ParametricPlot3D (as well as the annotations that you may not need), and add yours:

Show[
randVectors /.
Annotation[{color_, ___, l : _Line}, ___] :> {color, Thickness[0.02], l},

Boxed -> False,(*instead of BoxStyle -> Thick*)

PlotRange -> Automatic, Axes -> None,
SphericalRegion -> True,
Method -> {"RotationControl" -> "Globe"},
ImageSize -> {500, 500},
Background -> Black
]


I would also recommend using Boxed -> False` to get rid of the encompassing box, which was showing on top of some of your lines as a black "blot" in your plot.

• I need the box, in my full code, to help visualization on a black background.
– Cham
Jan 7, 2021 at 16:30