diff --git a/Modelica/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/coolWarm.mo b/Modelica/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/coolWarm.mo
new file mode 100644
index 0000000000..8c1a1ba90d
--- /dev/null
+++ b/Modelica/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/coolWarm.mo
@@ -0,0 +1,58 @@
+within Modelica.Mechanics.MultiBody.Visualizers.Colors.ColorMaps;
+function coolWarm "Returns the \"coolWarm\" color map"
+extends Modelica.Mechanics.MultiBody.Interfaces.partialColorMap;
+
+protected
+ final Real Start[3] = {59/255, 76/255, 192/255}; // blue
+ final Real Mid[3] = {242/255, 242/255, 242/255}; // gray
+ final Real End[3] = {180/255, 4/255, 38/255}; // red
+
+ final Real cm[n_colors,3];
+ final Real t; // normalized position
+ final Real u; // interpolation factor
+
+algorithm
+ if n_colors >= 1 then
+ for i in 1:n_colors loop
+ t := (i-1)/(n_colors-1);
+
+ if t <= 0.5 then
+ u := t/0.5;
+ cm[i,:] := (1-u)*Start + u*Mid;
+ else
+ u := (t-0.5)/0.5;
+ cm[i,:] := (1-u)*Mid + u*End;
+ end if;
+ end for;
+
+ colorMap := 255*cm;
+ else
+ colorMap := [59,76,192];
+ end if;
+
+ annotation (Documentation(info="
+
Syntax
+
+ColorMaps.coolWarm();
+ColorMaps.coolWarm(n_colors=64);
+
+Description
+
+This function returns the color map \"coolWarm.\" A color map
+is a Real[:,3] array where every row represents a color.
+With the optional argument \"n_colors\" the number of rows
+of the returned array can be defined. The default value is
+\"n_colors=64\" (it is usually best if n_colors is a multiple of 4).
+Image of the \"coolWarm\" color map:
+
+
+
+
+
+
+See also
+ColorMaps,
+colorMapToSvg,
+scalarToColor.
+"));
+end coolWarm;
diff --git a/Modelica/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/package.order b/Modelica/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/package.order
index f1c67e30de..195b9aa4cf 100644
--- a/Modelica/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/package.order
+++ b/Modelica/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/package.order
@@ -5,3 +5,7 @@ spring
summer
autumn
winter
+coolWarm
+trafficLight
+plasma
+viridis
diff --git a/Modelica/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/plasma.mo b/Modelica/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/plasma.mo
new file mode 100644
index 0000000000..f41c932b84
--- /dev/null
+++ b/Modelica/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/plasma.mo
@@ -0,0 +1,57 @@
+within Modelica.Mechanics.MultiBody.Visualizers.Colors.ColorMaps;
+function plasma "Returns the \"plasma\" color map"
+ extends .Modelica.Mechanics.MultiBody.Interfaces.partialColorMap;
+
+protected
+ final Real Start[3] = {13/255, 8/255, 135/255};
+ final Real Mid[3] = {219/255, 92/255, 104};
+ final Real End[3] = {240/255, 249/255, 33/255};
+
+ final Real cm[n_colors,3];
+ final Real t; // normalized position
+ final Real u; // interpolation factor
+algorithm
+ if n_colors >= 1 then
+ for i in 1:n_colors loop
+ t := (i-1)/(n_colors-1);
+
+ if t <= 0.5 then
+ u := t/0.5;
+ cm[i,:] := (1-u)*Start + u*Mid;
+ else
+ u := (t-0.5)/0.5;
+ cm[i,:] := (1-u)*Mid + u*End;
+ end if;
+ end for;
+
+ colorMap := 255*cm;
+ else
+ colorMap := [122,76,192];
+ end if;
+
+ annotation (Documentation(info="
+Syntax
+
+ColorMaps.plasma();
+ColorMaps.plasma(n_colors=64);
+
+Description
+
+This function returns the color map \"plasma.\" A color map
+is a Real[:,3] array where every row represents a color.
+With the optional argument \"n_colors\" the number of rows
+of the returned array can be defined. The default value is
+\"n_colors=64\" (it is usually best if n_colors is a multiple of 4).
+Image of the \"plasma\" color map:
+
+
+
+
+
+
+See also
+ColorMaps,
+colorMapToSvg,
+scalarToColor.
+"));
+end plasma;
diff --git a/Modelica/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/trafficLight.mo b/Modelica/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/trafficLight.mo
new file mode 100644
index 0000000000..1ebd1f7348
--- /dev/null
+++ b/Modelica/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/trafficLight.mo
@@ -0,0 +1,58 @@
+within Modelica.Mechanics.MultiBody.Visualizers.Colors.ColorMaps;
+function trafficLight "Returns the \"trafficLight\" color map"
+ extends Modelica.Mechanics.MultiBody.Interfaces.partialColorMap(n_colors=3);
+
+protected
+ final Real Start[3] = {122/255, 255/255, 122/255}; // mid-green
+ final Real Mid[3] = {255/255, 230/255, 0}; // orange
+ final Real End[3] = {128/255, 0, 0}; // red
+
+ final Real cm[n_colors,3];
+ final Real t; // normalized position
+ final Real u; // interpolation factor
+algorithm
+ if n_colors >= 1 then
+ for i in 1:n_colors loop
+ t := (i-1)/(n_colors-1);
+
+ if t <= 0.5 then
+ u := t/0.5;
+ cm[i,:] := (1-u)*Start + u*Mid;
+ else
+ u := (t-0.5)/0.5;
+ cm[i,:] := (1-u)*Mid + u*End;
+ end if;
+ end for;
+
+ colorMap := 255*cm;
+ else
+ colorMap := [122,76,192];
+ end if;
+
+ annotation (Documentation(info="
+Syntax
+
+ColorMaps.trafficLight();
+ColorMaps.trafficLight(n_colors=3);
+
+Description
+
+This function returns the color map \"trafficLight.\" A color map
+is a Real[:,3] array where every row represents a color.
+With the optional argument \"n_colors\" the number of rows
+of the returned array can be defined. The default value is
+\"n_colors=3\".
+Image of the \"trafficLight\" color map:
+
+
+
+
+
+
+See also
+ColorMaps,
+colorMapToSvg,
+scalarToColor.
+"));
+
+end trafficLight;
diff --git a/Modelica/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/viridis.mo b/Modelica/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/viridis.mo
new file mode 100644
index 0000000000..85efda88f3
--- /dev/null
+++ b/Modelica/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/viridis.mo
@@ -0,0 +1,57 @@
+within Modelica.Mechanics.MultiBody.Visualizers.Colors.ColorMaps;
+function viridis "Returns the \"viridis\" color map"
+ extends Modelica.Mechanics.MultiBody.Interfaces.partialColorMap;
+
+protected
+ final Real Start[3] = {13/255, 8/255, 135/255};
+ final Real Mid[3] = {219/255, 92/255, 104};
+ final Real End[3] = {240/255, 249/255, 33/255};
+
+ final Real cm[n_colors,3];
+ final Real t; // normalized position
+ final Real u; // interpolation factor
+algorithm
+ if n_colors >= 1 then
+ for i in 1:n_colors loop
+ t := (i-1)/(n_colors-1);
+
+ if t <= 0.5 then
+ u := t/0.5;
+ cm[i,:] := (1-u)*Start + u*Mid;
+ else
+ u := (t-0.5)/0.5;
+ cm[i,:] := (1-u)*Mid + u*End;
+ end if;
+ end for;
+
+ colorMap := 255*cm;
+ else
+ colorMap := [122,76,192];
+ end if;
+
+ annotation (Documentation(info="
+Syntax
+
+ColorMaps.viridis();
+ColorMaps.viridis(n_colors=64);
+
+Description
+
+This function returns the color map \"viridis.\" A color map
+is a Real[:,3] array where every row represents a color.
+With the optional argument \"n_colors\" the number of rows
+of the returned array can be defined. The default value is
+\"n_colors=64\" (it is usually best if n_colors is a multiple of 4).
+Image of the \"viridis\" color map:
+
+
+
+
+
+
+See also
+ColorMaps,
+colorMapToSvg,
+scalarToColor.
+"));
+end viridis;
diff --git a/Modelica/Resources/Images/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/ColorMaps.png b/Modelica/Resources/Images/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/ColorMaps.png
index 53da5b0b65..1e26c8c718 100644
Binary files a/Modelica/Resources/Images/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/ColorMaps.png and b/Modelica/Resources/Images/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/ColorMaps.png differ
diff --git a/Modelica/Resources/Images/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/coolWarm.png b/Modelica/Resources/Images/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/coolWarm.png
new file mode 100644
index 0000000000..89144bd189
Binary files /dev/null and b/Modelica/Resources/Images/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/coolWarm.png differ
diff --git a/Modelica/Resources/Images/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/plasma.png b/Modelica/Resources/Images/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/plasma.png
new file mode 100644
index 0000000000..fbc30e3140
Binary files /dev/null and b/Modelica/Resources/Images/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/plasma.png differ
diff --git a/Modelica/Resources/Images/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/trafficLight.png b/Modelica/Resources/Images/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/trafficLight.png
new file mode 100644
index 0000000000..14e68d09a0
Binary files /dev/null and b/Modelica/Resources/Images/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/trafficLight.png differ
diff --git a/Modelica/Resources/Images/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/viridis.png b/Modelica/Resources/Images/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/viridis.png
new file mode 100644
index 0000000000..724d2827d3
Binary files /dev/null and b/Modelica/Resources/Images/Mechanics/MultiBody/Visualizers/Colors/ColorMaps/viridis.png differ