Here comes a sample data set
data = {{1.03971, 0.00617284, 12.11, 0.227037, 1}, {1.0231, 0.0216931, 27.23, 1.40703, 1}, {1.02864, -0.0294533, 1450, 0.0821789, 1}, {1.01636, -0.0149912, 16.89, 1.02227, 1}, {0.938865, -0.00899471, 68.94, 0.0000322202, 1}, {0.955953, 0.0199295, 1.89, 0.00448189, 9}, {1.03321, 0.0329806, 84.23, 0.094761, 1}, {1.02406, 0.0393298, 13.21, 0.099565, 1}, {0.9728, -0.00194004, 1000, 0.000845306, 0}, {1.00649, -0.00582011, 62.1, 0.0286736, 1}}; The first two columns correspond to the coordinates $(x,y)$, while the other three are some indicators. Now we want to plot those $(x,y)$ coordinates for which the fifth column is equal to 1, while the color of each point should be according to the value of the third column.
First we define a custom color function
valrange = {0, 100}; data[[All, 3]] = Rescale[data[[All, 3]] // N, valrange]; colfunc[x_, cf_] := If[x[[5]] == -2 || x[[5]] == -1 || x[[5]] == 0 || x[[5]] == 2 || x[[5]] == 9 || x[[5]] == 99, White, ColorData[cf][1 - x[[3]]]]; Then the graphics of the points
S0 = Graphics[{PointSize[0.01], Point[#[[1 ;; 2]], VertexColors -> colfunc[#, "Rainbow"]] & /@ data}]; and a custom colorbar
Clear[colorbar] colorbar[{min_, max_}, colorFunction_: Automatic, divs_: 150] := DensityPlot[y, {x, 0, 0.1}, {y, min, max}, AspectRatio -> 10, PlotRangePadding -> 0, PlotPoints -> {2, divs}, MaxRecursion -> 0, Frame -> True, FrameLabel -> {{None, Row[{Subscript["t", "esc"]}]}, {None, None}}, LabelStyle -> Directive[FontFamily -> "Helvetica", 20], FrameTicks -> {{None, All}, {None, None}}, FrameTicksStyle -> Directive[FontFamily -> "Helvetica", 20, Plain], ColorFunction -> colorFunction] Finally we merge together the graphics with the colorbar
With[{opts = {ImageSize -> {Automatic, 400}}, cf = "Rainbow"}, Row[{Show[{S0}, Axes -> False, Frame -> True, FrameLabel -> {"x", "y"}, RotateLabel -> False, LabelStyle -> Directive[FontFamily -> "Helvetica", 20], AspectRatio -> 3/4, ImagePadding -> {{90, 10}, {60, 40}}, opts], Show[colorbar[valrange, ColorData[cf][1 - #] &], ImagePadding -> {{10, 80}, {60, 40}}, opts]}]] which produces the following
The range of the colorbar is between 0 and 100, according to valrange. However in the real data set there are some few initial conditions which have $(x,y)$ coordinates with fifth column equal to 1, while the value of the third column is higher than 100 (see e.g., the third element of data list).
My question: Is there an elegant way to set automatically the higher label of the color bar "> 100", instead of simply "100"?
Many thanks in advance!
EDIT
If I set FrameTicks -> {{None, {0, 20, 40, 60, 80, "> 100"}}, {None, None}}, it does not work.

FrameTicks. When you provide it with a simple list, you need to give it numeric values of where the ticks will appear, it obviously can't interpret">100"properly. In this case you need to provide it with a list of the form{{value, label}, {value, label}, ...}. For a "nice" range like{0, 100}it's quite easy to handle this, but what if you feed it a range like{5, 98}? $\endgroup$