Re: Density Plot coloring issue
- To: mathgroup at smc.vnet.net
- Subject: [mg79749] Re: Density Plot coloring issue
- From: Yvon <ymgrigsb at yahoo.com>
- Date: Fri, 3 Aug 2007 06:31:18 -0400 (EDT)
- References: <f8s3jr$3j6$1@smc.vnet.net>
I found one error in my formula, but this doesn't seem to fix the
overall problem. Also, I noticed it did something wierd to the data
density code when I pasted it into the original post. So I will
repaste below with the fix to my GetColor function and cleaned up
code. The index could be returned as 0 which there is no such thing
in my CellColor table. A simple if statement fixed that. But I'm
still coming up with cells that are white for the max value and
minimum above 0 even though the color function has returned the
expected color.
cList = {{6.75, 5.85, 0., 6.39, 7.41, 0.}, {6.4, 5.57, 0., 6.6, 6.68,
0.}, {5.99, 5.51, 0., 6.24, 6.37, 0.}, {6.1, 5.72, 3.93, 5.92,
5.89, 0.}, {5.71, 5.85, 6.05, 5.92, 6.06, 0.}, {5.62, 5.64, 5.61,
5.42, 5.14, 0.}, {0, 0, 0, 0, 0, 0}}
numColors = 10
minLWC = 0
maxLWC = 10
CellColor[index_] := Module[{cTable, s},
(*White,purple,blue, light blue, light green, kahki, light yellow,
light orange, pink, red *)
cTable = {{1, 1, 1}, {0.5, 0, 0.5}, {0.4, .6, 0.9}, {0.7, .9, .96},
{.8, 1, .7}, {.6, 0.8, .2}, {1, 1, 0.5}, {1, .84, 0}, {1, .75, .8}, {.
86, .08, .24}};
s = Partition[Map[RGBColor, cTable], 1];
RGBColor[cTable[[index]]]
]
(*Create a separate function with one parameter x =
index called from previous function that returns RGBColor object*)
GetColor[x_] := (p = Round[Abs[(x - min)*numColors/(max - min)]] ;
If[p == 0, p = 1, p]; CellColor[p]);
ListDensityPlot[lData, InterpolationOrder -> 0,
ColorFunction -> GetColor, ColorFunctionScaling -> {False},
Mesh -> {numCols - 1, numRows - 1}, PlotRangePadding -> None,
DataRange -> {{0, numCols}, {0, numRows}},
Epilog -> {Hue[0, 0, 0], MapIndexed[Text[#1, #2 - .5] &,
Transpose[lData], {2}]}]
]