# PrettyColorize

Tools for customizing the colors of your figures in Mathematica. You can download it from GitHub.

# Installation

- Install PrettyRandomColor following instructions here.
Open the Mathematica user application folder by

`SystemOpen @ FileNameJoin[{$UserBaseDirectory, "Applications"}];`

Create a folder called /PrettyColorize and place PrettyColorize.wl and /Kernel inside.

# Usage

- Load package using << PrettyColorize`.
- Apply PrettyColorize to any plotting function, e.g., Plot, ListPlot, Plot3D…

# Code example

## Minimal example

Wherever a color directive can be placed, you can instead put a Pretty[itemName_String] as a placeholder.

`PrettyColorize @ Plot[x, {x, -5, 5}, PlotStyle -> Pretty["Line"]]`

The above code generates a color palette shown below. Left-click on colors/storage changes the currently selected target item. Right-click on colors copies the clicked color to storage. Right-click on storage removes the clicked stored color.

Pressing Confirm button will generate a runnable cell that replace the Pretty placeholder to the selected colors:

## ContourPlot

Update and upgrade the server

```
PrettyColorize @
ContourPlot[{Abs[Sin[x] Sin[y]] == 0.5, Abs[Cos[x] Cos[y]] == 0.5}, {x, -3, 3}, {y, -3, 3},
ContourStyle -> {{Pretty["Contour1"]}, {Pretty["Contour2"], Dashed}},
FrameTicks -> None,
Epilog -> {
Pretty["Points"],
PointSize[0.025],
Point[{{0, 0}, {\[Pi]/2, \[Pi]/2}, {-\[Pi]/2, \[Pi]/2}, {\[Pi]/2, -\[Pi]/2}, {-\[Pi]/2, -\[Pi]/2}}]
}
]
```

## Plot3D

```
PrettyColorize @
Plot3D[{x^2 + y^2, 100 Exp[-0.5 (x^2 + y^2)]}, {x, -5, 5}, {y, -5, 5},
PlotRange -> All,
PlotStyle -> {Pretty["Surface1"], Pretty["Surface2"]},
Mesh -> None,
BoxStyle -> Directive[Pretty["Box"]],
AxesStyle -> Directive[Pretty["Box"]],
Ticks -> None
]
```

## A more ‘serious’ example

MaTeX developed by Szabolcs Horvát is recommended when drawing scientific figures in Mathematica.

```
<< MaTeX`
PrettyColorize @ Plot[
{
Callout[(2 x)^2 Sin[x],
MaTeX @ {"Min", "Max"},
{Below, Above},
Background -> Pretty["Callout"],
FrameMargins -> 2,
Appearance -> "Balloon"
],
-10 x
},
{x, -3, 3},
PlotRange -> {-40, 40},
PlotStyle -> {{Pretty["Curve1"]}, {Pretty["Curve2"]}},
Frame -> True,
FrameStyle -> Black,
FrameTicks -> {
{Thread[{#, MaTeX @ #}] & /@ Range[-40, 40, 20], None}, {Thread[{#, MaTeX @ #}] & /@ Range[-3, 3, 1], None}
},
AxesStyle -> Directive[Pretty["Axes"], Dashed],
Filling -> {1 -> {{2}, {Pretty["FillLeft"], Pretty["FillRight"]}}},
ImageSize -> 600
]
```

# TODO

## Known problems

- Random functions will be called during every dynamic update.

## Features

- New colors generation based on existing stored colors.
- A button for figure export.
- Performance improvement on dynamic control objects.