Mòdul:ChartColors
Aparença
Documentació del mòdul [ mostra ] [ modifica el codi ] [ mostra l'historial ] [ refresca ]
A continuació es mostra la documentació transclosa de la subpàgina /ús. [salta a la caixa de codi]
Utilitzat per {{ChartColors}} i {{ChartColorLegends}}
Funció ShowColors
[modifica]Codi | Resultat |
---|---|
{{#invoke:ChartColors|ShowColors|Categ20|5}} |
|
{{ChartColors|Categ20|9}} |
|
{{#invoke:ChartColors|ShowColors|Categ20|3|-}} |
#1f77b4 #ff7f0e #2ca02c |
{{#invoke:ChartColors|ShowColors|Categ20|3|a}} |
#1f77b4ff #ff7f0eff #2ca02cff |
{{#invoke:ChartColors|ShowColors|Plotter|5}} |
|
{{ChartColors|Plotter|20}} |
Funció Legends
[modifica]{{#invoke:ChartColors|Legends|paleta=Categ20|n_colors=5|n_cols=2}}
produeix:
{{#invoke:ChartColors|Legends|paleta=Categ20|n_colors=3|n_cols=1| línies= Un Dos Tres}}
produeix:
local p = {}
local SA = require "Module:SimpleArgs"
local CFCM = require "Module:ComplForColorModules"
local RS = {
ColorNameInvalid = 'ColorNameInvalid',
ColorNumInvalid = 'ColorNumInvalid',
StartNumInvalid = 'StartNumInvalid',
}
local i18n = {
[RS.ColorNameInvalid] = "Invalid color palette name ($1), it must be ''Categ20'' or ''Plotter''",
[RS.ColorNumInvalid] = "The color number should be between 1 and $1 (now $2)",
[RS.StartNumInvalid] = "The first color number should be between 1 and $1 (now $2)",
}
i18n = SA.loadI18n ('ChartColors', i18n)
local function I18nError (S, ...)
return SA.I18nErrorParams (i18n[S], ...)
end
local category20 = {
'#1f77b4', '#aec7e8', '#ff7f0e', '#ffbb78', '#2ca02c', '#98df8a', '#d62728', '#ff9896', '#9467bd', '#c5b0d5',
'#8c564b', '#c49c94', '#e377c2', '#f7b6d2', '#7f7f7f', '#c7c7c7', '#bcbd22', '#dbdb8d', '#17becf', '#9edae5',
}
local plotter = {--from Module:Plotter/DefaultColors
'red', 'blue', 'green', 'yellow', 'fuchsia', 'aqua', 'brown', 'orange', 'purple', 'sienna',
'#F0A3FF', '#191919', '#005C31', 'honeydew', '#808080', 'khaki', 'lime', 'navy', 'pink', '#426600',
'#5EF1F2', 'turquoise', '#E0FF66', 'violet', '#FFFF80', '#FF5005',
}
function p.GetColors (ColorName, IsInv, StartN, N, CallError)
local SelColors = {}
local ColorNameL = string.lower(ColorName)
local Palet0 = {}
if ColorNameL == 'categ20' then
Palet0 = category20
elseif ColorNameL == 'plotter' then
Palet0 = plotter
elseif CallError then
I18nError (RS.ColorNameInvalid,ColorName)
end
MaxN = table.getn(Palet0)
if (N < 0) or (N > MaxN) then
I18nError (RS.ColorNumInvalid,tostring(MaxN),tostring(N))
else
Palet = {}
if IsInv then
for i=MaxN, 1, -1 do
table.insert(Palet, Palet0[i])
end
else
Palet = Palet0
end
if StartN > MaxN then
I18nError (RS.StartNumInvalid,tostring(MaxN),tostring(StartN))
end
local Step = 1
local NEnd = N
if (ColorNameL == 'categ20') and (N<=10) then
Step = 2
if StartN == 1 then
NEnd = N*2
end
end
if StartN == 1 then
for i=1, NEnd, Step do
table.insert(SelColors, Palet[i])
end
else
Count = 0
for i=StartN, MaxN, Step do
table.insert(SelColors, Palet[i])
Count = Count + 1
if Count == NEnd then
break
end
end
if Count < NEnd then
for i=1, MaxN, Step do
table.insert(SelColors, Palet[i])
Count = Count + 1
if Count == NEnd then
break
end
end
end
end
return SelColors
end
end --GetColors
function p.ColorNameInvStartFromS (S)
local StartN = 1
local ParamsA = {}
function GetStartN (Pos)
SA.CheckSIsPosInt (ParamsA[Pos])
if SA.Error.yes then
p.MsgError()
else
StartN = tonumber (ParamsA[Pos])
end
end
local ColorName, IsInv
ColorName, IsInv, ParamsA = CFCM.ColorNameInvFromS0 (S)
local PN = table.getn(ParamsA)
if PN > 1 then
if ParamsA[2]=='i' then
IsInv = true
else
GetStartN (2)
end
if PN == 3 then
GetStartN (3)
end
end
return ColorName, IsInv, StartN
end --ColorNameInvStartFromS
function ColorNameInv (args, WithName)
local S = CFCM.ColorNameInv0 (args, WithName)
local ColorName, IsInv, ParamsA = CFCM.ColorNameInvFromS0 (S)
local StartN = 1
ColorName, IsInv, StartN = p.ColorNameInvStartFromS (S)
return ColorName, IsInv, StartN
end --ColorNameInv
function p.ShowColors(frame)
local args,Nargs = SA.GetArgs (frame)
if Nargs > 0 then
local ColorName, IsInv, StartN = ColorNameInv (args, false)
local N = SA.RPosInt_Par (args, 2)
local WriteColor = SA.Char_Par (args, 3, 'a-', '')
local ColorFound = {}
ColorFound = p.GetColors (ColorName, IsInv, StartN, N, true)
local boxes = {}
for i=1, table.getn(ColorFound) do
table.insert(boxes, CFCM.Box(ColorFound[i],WriteColor))
end
return table.concat(boxes, " ")
end
end --ShowColors
function p.Legends(frame)
local args,Nargs = SA.GetArgs (frame)
if Nargs > 0 then
local ColorName, IsInv, StartN = ColorNameInv (args, true)
local n_colors = CFCM.N_Colors (args)
local ColorFound = {}
ColorFound = p.GetColors (ColorName, IsInv, StartN, n_colors, true)
return CFCM.LegendText (args, ColorFound, n_colors)
end
end --Legends
return p