I have a very general question. I wish to plot a mathematical function on a 2-dimensional grid. The function will be represented by 3 sets of floats, x-values, y-values, and z-values. Obviously, it is impossible to plot 3 such data sets on a 2D grid, so one approach is to use pixel coloration to represent the z-values.

Those examples (and there are many to be found) show something like the function of the complex variable z, f(z) = exp(z). I have attached a exp(z).jpg example of the imaginary part of the plot exp(z).

My question is: How to accomplish such a gradient colorization, assuming one already has the data?

I have experimented with Gdiplus SetPixel, but I have not figured out how to produce a smooth gradient. Obviously, I'm in way over my head, but I had hoped someone might lead me in the right direction.

Here's my attempt to create a simple gradient:
	CDC * pDC = GetDC();
	Graphics graphics(pDC->m_hDC);

	CRect r;

	HWND hwnd = GetSafeHwnd();
	CDC * pdc = GetDC();
	HDC hdc = ::GetDC(hwnd);
	COLORREF cr = RGB(192, 192, 192);
	for(int x = 10; x <= 600; x++)
		for(int y = 10; y <= 400; y++)
			SetPixelV(hdc, x, y, cr); 
			cr += 1;
You can see my lame result also attached mygrad.jpg. Your thoughts greatly appreciated. How would you do this ?