Polar densityplot

Dear All,

I would like to plot a 3D polar plot or density polar plot I don't know how to call it (see attachement). I have a matrix (2500, 360) of point corresponding to Z intensity, each column corresponds to one degree and the row number to the radius (the number of row is the same for each columns). How can I do an image with? Should I change to cylindrical coordinate triplets or can I manage directly with this matrix?

Thanks for your help
Matias
You'll need to convert the data to rectangular format. Given that you have a very large number of points, the following method is recommended over ImageInterpolate.

Function fDemo()

	Make/O/N=(2500, 360) polarMatrix
	SetScale x, 0, 1, "radius", polarMatrix
	SetScale/P y, 0, 1, "degrees", polarMatrix
	
	polarMatrix= p*q
	
	Make/O/N=(2500,2500) matrix
	Variable radiusMax= DimOffset(polarMatrix,0)+DimDelta(polarMatrix,0)*(DimSize(polarMatrix,0)-1)
	SetScale/I x, -radiusMax, radiusMax, "", matrix
	SetScale/I y, -radiusMax, radiusMax, "", matrix
	MultiThread matrix= FindZInPolarMatrix(polarMatrix,x,y)
End

ThreadSafe Function FindZInPolarMatrix(polarMatrix,x,y)
	Wave polarMatrix
	Variable x,y
	
	Variable/C rTheta= r2polar(cmplx(x,y))	// cmplx(radius,angleinRadians)
	
	Variable radius= real(rTheta)
	Variable degrees= imag(rTheta)*180/pi
	if( degrees < 0 )
		degrees += 360	// assuming all angles in polarMatrix are >=0
	endif
	if( degrees > 359 )
		degrees= 359	// assuming all angles in polarMatrix are <=359
	endif
	
	Variable radiusMax= DimOffset(polarMatrix,0)+DimDelta(polarMatrix,0)*(DimSize(polarMatrix,0)-1)
	Variable radiusMin= DimOffset(polarMatrix,0)
	Variable zVal= NaN
	if( (radius >= radiusMin) && (radius <= radiusMax) )
		zVal = polarMatrix(radius)(degrees)
	endif
	return zVal
End


See the attached graphic for the before and after with my demonstration data.

--Jim Prouty
Software Engineer, WaveMetrics, Inc.
polarMatrix.png (31.09 KB)