Bug introduced in 8.0 or earlier and persisting through 11.0.1 or later
f[x_?NumericQ]:= (Do[Break[],{i,1,2}];x)
Plot[x,{x,0,1},ColorFunction->(ColorData["Rainbow"][f[#]]&)]
Break::nofwd: No enclosing For, While, or Do found for Break[].
What's going on here? I've tried setting HoldFirst
attribute on f
and I've also tried using Unevaluated
which gives surprising results:
(* Works fine, gives plot colored as expected *)
Plot[x, {x, 0, 1},
ColorFunction -> (Unevaluated[ColorData["Rainbow"][f[#1]]] &)]
(* Gives a black and white plot with error:
"Unevaluated is not a Graphics primitive or directive" *)
ListContourPlot[IdentityMatrix[3],
ColorFunction->(Unevaluated[ColorData["Rainbow"][f[#1]]]&)]
Edit This on the other hand works:
Plot[x,{x,0,1},ColorFunction->Function[c,ColorData["Rainbow"][f[c]]]]
Which only difference is that it uses Function[c,ColorData["Rainbow"][f[c]]]]
instead of Function[ColorData["Rainbow"][f[Slot[1]]]]]
Comments
Post a Comment