Skip to content

Commit 1174ca6

Browse files
author
Mohammed Sadique
committed
tuning colorshceme
1 parent c5935ef commit 1174ca6

4 files changed

Lines changed: 27 additions & 19 deletions

File tree

lib/matplotex/colorscheme/colormap.ex

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ defmodule Matplotex.Colorscheme.Colormap do
33
defstruct [:color, :offset, opacity: 1]
44

55
def viridis do
6-
["#fde725", "#21918c", "#3b528b", "#440154"]
6+
["#FDE725","#6CCE59","#1F9E89", "#482777"]
77
end
88

99
def plasma do
@@ -26,16 +26,15 @@ defmodule Matplotex.Colorscheme.Colormap do
2626

2727
def make_colormap(colors) do
2828
size = length(colors)
29-
29+
offsets = Nx.linspace(0, 1, n: size)|> Nx.to_list()
3030
colors
31-
|> Enum.with_index()
32-
|> Enum.map(&colormap(&1, size))
31+
|> Enum.zip(offsets)
32+
|> Enum.map(&colormap(&1))
3333
end
3434

3535
def default_cmap(), do: viridis()
3636

37-
defp colormap({color, idx}, size) do
38-
offset = idx / size * 100
37+
defp colormap({color, offset}) do
3938
%__MODULE__{color: color, offset: offset}
4039
end
4140
end

lib/matplotex/colorscheme/garner.ex

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ defmodule Matplotex.Colorscheme.Garner do
88

99
def garn_color({min, max} = range, point, cmap) when max != min do
1010
cue = (point - min) / (max - min)
11-
1211
cmap
1312
|> make_from_cmap()
1413
|> put_range(range, cue)
@@ -31,27 +30,37 @@ defmodule Matplotex.Colorscheme.Garner do
3130

3231
defp place_edges([preceeding, minor, major, final]) do
3332
%__MODULE__{
34-
preceeding: preceeding.color,
35-
minor: minor.color,
36-
major: major.color,
37-
final: final.color
33+
preceeding: {preceeding.color, preceeding.offset},
34+
minor: {minor.color, minor.offset},
35+
major: {major.color, major.offset},
36+
final: {final.color, final.offset}
3837
}
3938
end
4039

4140
defp place_edges(_) do
4241
raise InputError, message: "Invalid colormap"
4342
end
4443

45-
defp point_color(%__MODULE__{color_cue: cue, preceeding: preceeding, minor: minor})
46-
when cue < minor do
47-
minor |> Blender.mix(preceeding, cue) |> Rgb.to_string()
44+
defp point_color(%__MODULE__{color_cue: cue, preceeding: {preceeding,preceeding_offset}, minor: {minor, minor_offset}})
45+
when cue <= minor_offset do
46+
47+
cue = mix_perces(cue, preceeding_offset, minor_offset)
48+
minor|> Blender.mix(preceeding, cue) |> Rgb.to_string()
4849
end
4950

50-
defp point_color(%__MODULE__{color_cue: cue, minor: minor, major: major}) when cue < major do
51+
defp point_color(%__MODULE__{color_cue: cue, minor: {minor, minor_offset}, major: {major, major_offset}}) when cue <= major_offset do
52+
cue = mix_perces(cue, minor_offset, major_offset)
5153
major |> Blender.mix(minor, cue) |> Rgb.to_string()
5254
end
5355

54-
defp point_color(%__MODULE__{color_cue: cue, major: major, final: final}) when cue >= major do
55-
final |> Blender.mix(major) |> Rgb.to_string()
56+
defp point_color(%__MODULE__{color_cue: cue, major: {major,major_offset}, final: {final, final_offset}}) when cue > major_offset do
57+
cue = mix_perces(cue, major_offset, final_offset)
58+
final|> Blender.mix(major, cue) |> Rgb.to_string()
5659
end
60+
61+
defp mix_perces(cue, preceeding, postceeding) when preceeding != postceeding do
62+
(cue - preceeding) / (postceeding - preceeding)
63+
end
64+
defp mix_perces(cue, _, _), do: cue
65+
5766
end

lib/matplotex/element/cmap.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ defmodule Matplotex.Element.Cmap do
2222
end
2323

2424
def tag_stop(%{offset: offset, color: color, opacity: opacity}) do
25-
~s(<stop offset="#{offset}%" style="stop-color:#{color};stop-opacity:#{opacity}" />)
25+
~s(<stop offset="#{offset * 100}%" style="stop-color:#{color};stop-opacity:#{opacity}" />)
2626
end
2727

2828
def color_gradient(%__MODULE__{container: container} = element) do

lib/matplotex/figure/cast.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -557,7 +557,7 @@ defmodule Matplotex.Figure.Cast do
557557

558558
tick_label =
559559
Label.cast_label(
560-
%Label{type: "tick.cmap", x: tick_label_x, y: y_cord_tick, text: tick},
560+
%Label{type: "tick.cmap", x: tick_label_x, y: y_cord_tick, text: format_tick_label(tick)},
561561
cmap_tick_font
562562
)
563563

0 commit comments

Comments
 (0)