Create a colorbar plot legend

3

1

I have the following list of parametric equations

lst = {10*Cos[u]*Sin[v], 3*Sin[u]*Sin[v], 2*Cos[v]};

I define the following color function

colFun = Function[{u, v}, Hue[Rescale[dam, {0, 1}]]]; 

whereas

dam = Sqrt[(1296*Cos[u]^4*Sin[v]^4)/
           (900*Cos[v]^2 + 36*Cos[u]^2*Sin[v]^2 + 400*Sin[u]^2*Sin[v]^2)^2 +
           (3600*Cos[u]^2*Sin[v]^2*(9*Cos[v]^2 + 4*Sin[u]^2*Sin[v]^2))/
           (900*Cos[v]^2 + 4*(9*Cos[u]^2 + 100*Sin[u]^2)*Sin[v]^2)^2]; 

So I get the following parametric plot

g = ParametricPlot3D[lst, {u, 0, 2*Pi}, {v, 0, Pi},
        Mesh -> False, 
        PlotStyle -> Opacity[0.8],
        ColorFunction -> colFun, 
        ColorFunctionScaling -> False]

What I want now is to create a color bar which will accompany g. This color bar will show the values of

Rescale[dam, {0, 1}]

The coloring of course will be again according to the same defined color function.

I am looking for a solution that works with Mathematica 8.

Dimitris

Posted 2014-07-04T12:57:55.363

Reputation: 4 594

1You can select each piece of code you wrote, and press the {} button in the editor toolbar. This will fix the formatting of the code. – Szabolcs – 2014-07-04T13:13:47.563

You can try BarLegend. Something like Legended[g, BarLegend[{colFun,{min,max}}]] – Szabolcs – 2014-07-04T13:15:30.713

Szabolcs thank you very much for your advices regarding my query and as well as the appearance of the post. – Dimitris – 2014-07-04T13:19:13.443

Unfortunately, I do not have Mathematica 9. I work with version 8. As I saw, BarLegend is a new built-in function introduced in version 9. – Dimitris – 2014-07-04T13:24:11.057

Szabolcs thanks for adding the required tag. – Dimitris – 2014-07-04T13:30:56.220

Answers

4

This is not a full solution, but it illustrates how I would proceed using Mathematica 8:

colourBar = 
 DensityPlot[y, {x, 0, 1}, {y, 0, 1}, AspectRatio -> 5, 
  PlotRangePadding -> 0, 
  FrameTicks -> {{None, Range[0, 1, .1]}, {None, None}}, 
  ColorFunction -> Hue]

Row[{Show[g, ImageSize -> Medium], 
  Show[colourBar, ImageSize -> Small]}]

enter image description here

It needs extra work to get the formatting right.

You can also look at this package, but I can't offer help with its use.

Szabolcs

Posted 2014-07-04T12:57:55.363

Reputation: 213 047

Do you mean now = not?? – bobthechemist – 2014-07-04T14:53:35.193

@bobthechemist Yes, I did! – Szabolcs – 2014-07-04T14:59:05.403

Szabolcs I really appreciate your kind interest. Thank you once again. It was exactly what I need! I have only one query. Is is possible to use another "color palette" instead of Hue? If you see the color bar begins with almost Red (for values close to zero) and ends with red. This may be to Hue[0] and Hue[1] both evaluate to red. Graphics[{Hue[0], Disk[]}] – Dimitris – 2014-07-04T15:24:01.007

It would be perfect if for instance orange was closer to red in this "color bar". Is it possible? Should I use a different function in lieu of Hue? – Dimitris – 2014-07-04T15:32:26.623

@dimitris Check the predefined colour palettes (look up ColorData and Color Schemes in the palettes menu), or you can build your own using Blend. – Szabolcs – 2014-07-04T15:39:27.857

Ok Szabolcs! Let's do something on my own:-)! I will search and if I face a problem I will be back! – Dimitris – 2014-07-04T15:42:02.873

Say that instead of the original color function colFun I have colFun = Function[{u, v}, Blend[{Blue, Hue[Rescale[dam, {0, 0.1}]], Yellow}, {0.1, 0.9, 0.1}]]; how I should modify colourBar now? – Dimitris – 2014-07-04T16:14:17.677