Re: on ColorFunction and combined images?
- To: mathgroup at smc.vnet.net
- Subject: [mg47972] Re: on ColorFunction and combined images?
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Tue, 4 May 2004 01:08:52 -0400 (EDT)
- Organization: Universitaet Leipzig
- References: <c6up48$b6n$1@smc.vnet.net>
- Reply-to: kuska at informatik.uni-leipzig.de
- Sender: owner-wri-mathgroup at wolfram.com
Hi,
when you combine the plots, the ColorFunctionScaling option
is removed and the colors computed incorrect and this cause your
error. You should do something like
mycf[x_] := RGBColor[0, 0, Mod[(x - 350)/20, 1]]
pic1 = DensityPlot[350 + 20*x^2, {x, 0, 1}, {y, 0, 1}, ColorFunction ->
mycf,
Mesh -> False]
pic2 = Plot[x^2, {x, 0, 1}];
Show[pic1, pic2];
Regards
Jens
Sampo Smolander wrote:
>
> Intro:
>
> If I want to combine, say, a density field plot and an overlaid
> curve on it, it is rather easy:
>
> pic1 = DensityPlot[x^2, {x, 0, 1}, {y, 0, 1}, Mesh -> False]
> pic2 = Plot[x^2, {x, 0, 1}]
> Show[pic1, pic2]
>
> My Case:
>
> But say that I am plotting a densify field that that describes, just for
> an example, some carbon dioxide concentrations for which a natural scale
> (in the air outdoors) is something like 350...370 rather than 0...1.
>
> I can tell DensityPlot to feed the raw concentration values
> to the ColorFunction, and I can provide it my own ColorFunction:
>
> mycf[x_] := RGBColor[0, 0, (x - 350)/20]
> pic1 = DensityPlot[350 + 20*x^2, {x, 0, 1}, {y, 0, 1},
> ColorFunctionScaling -> False, ColorFunction -> mycf, Mesh -> False]
> pic2 = Plot[x^2, {x, 0, 1}]
> Show[pic1, pic2]
>
> The Problem:
>
> There is no problem in drawing the pic1, but then when I try to
> combine pic1 and pic2 with that Show, I get an error message:
> "Argument in RGBColor[0, 0, -17.5] is not a real number between 0 and 1."
>
> It apparently happens so that with Show, the pic1 is redrawn and (some
> of?) the options that I gave in the original DensityPlot command are not
> used anymore.
>
> Is there a way around this problem?
> How can I overlay other graphs with densityplots for which I have used my
> own colorfunctions?
>
> I think of the following: I could manually scale every function, that I
> attempt to plot, to give out values only in the range 0...1. Then
> I guess everything should work okay. But an easier way?
>
> --
> Sampo Smolander ............... http://www.cs.helsinki.fi/u/ssmoland/
> Division of Atmospheric Sciences ............. University of Helsinki