function a = GraphPData(b)

	% Initialize some local variables.
	
rad = pi/180;

makeMovie = 0;
numberPlots = 1;
pair3D2DFlag = 1;
numberAngles = 39;
loadMatVariables = 0;
saveMatVariables = 0;
ViewP = [160,35];

	% Barnes bands 1-6 = 1-6; Cimel bands 1-3 = 7-9;
	% Barnes NP bands 7-1 = 10, 7-2 = 11, 7-3 = 12; 
	% Cimel NP band 1 = 13, band 2 = 14, band 3 = 15;
	
band = 7;

	% Parameter to be plotted.
	% I = 1, Q = 2, U = 3, Percent Polarization = 4, 
	% Chi ange of plane of polarization = 5, Reflectance percent = 6;

parameter1 = 4;
parameter4 = [1 2 4 5];

	% Specify the set to be plotted.
	
set = 1;

	% Specify the rep to be plotted.
	
rep = 1;

if loadMatVariables == 1

		% Load the data set in.
	
	load 725PP2B1;

else	% loadMatVariables != 1

	X = zeros(39,38);
	Y = zeros(39,38);
	Z = zeros(39,numberPlots*38);
	
	XCurtain = zeros(60,1);
	YCurtain = zeros(60,1);
	ZCurtain = zeros(60,numberPlots);
	
	dataIndex = zeros(4,1);
	
		% Get the index into the XYZ arrays for the view sets.
		% The 0 degree view set will always be the first.
		% The others will be scattered.
		
	if rep == 1
		index = [2 3 4 1 5 6 7 8 9 10 11 12]';
	
	else	% rep == 2
		index = [2 3 4 5 6 7 8 9 10 11 1 12]';
		
	end;	% if rep == 1, else...
	
	rfid = fopen('m0715.BinOutput');
	
	if rfid == [],
		return,
		end;
	
		% Skip 3 header lines.
	
	dataline = fgets(rfid);
	dataline = fgets(rfid);
	dataline = fgets(rfid);
		
		% Get the indices for the requested data
		
	if (band > 0) & (band <= 9)
		base = 5 + (band-1)*6;
		
	elseif	band > 9
		base = 59 + (band-10);
	
	else	% band <= 0;
		return;
		
	end;	% if (band > 0) & (band <= 9), elseif...
	
	if numberPlots == 1
		dataIndex(1) = base + parameter1;
		
	else	% numberPlots == 4
		for i=1:numberPlots
			dataIndex(i) = base + parameter4(i);
			end;	% for i=1:numberPlots
			
	end;	% if numberPlots == 1, else...
	
		% Get the field of view for the requested data.
		
	fov = 12;
	if band <= 6 | band == 10 | band == 11 | band == 12
		fov = 4;
		end;
		
	for sets = 1:12
	
		indexSet = index(sets);
	
			% Get header for set and decode some parameters.
			
		dataline = fgets(rfid);
		
		[A count] = sscanf(dataline,...
			'Set %d\tRep %d\tCode %d\tScene: %s\tRelative Azimuth: %d to %d\tSolar Zenith: %d to %d');
		
		set = A(1);
		rep = A(2);
		scene = A(4:13);
		relAzM = A(14);
		relAzP = A(15);
		solZenM = A(16);
		solZenP = A(17);
		
			% Get the relative azimuth angle for the set plus the range.
		
		relAzM = rem(relAzM+360,360);
		relAzP = rem(relAzP+360,360);	
		relAz = (relAzM + relAzP)/2;
		halfAngle = fov/2 + abs(relAzP-relAzM)/2;
		
		cosAdjRelAz = cos( (90-relAz) * rad );
		sinAdjRelAz = sin( (90-relAz) * rad );
		
		cosPlusAngle = cos( (90-relAz+halfAngle) * rad );
		sinPlusAngle = sin( (90-relAz+halfAngle) * rad );
		
		cosMinusAngle = cos( (90-relAz-halfAngle) * rad );
		sinMinusAngle = sin( (90-relAz-halfAngle) * rad );
		
			% Get offset to allow for a finite fov at a
			% zenith angle of 0 degrees.
			
		xPlusOffset = 2 * cos( (90-relAz+90)*rad );
		yPlusOffset = 2 * sin( (90-relAz+90)*rad );
			
		xMinusOffset = 2 * cos( (90-relAz-90)*rad );
		yMinusOffset = 2 * sin( (90-relAz-90)*rad );
		
		for angles = 1:39
			dataline = fgets(rfid);
			fileError = ferror(rfid);
			
			if fileError ~= [],
				break,
				end
			
				% Get data for observation.
					
			obs = sscanf(dataline, '%f', 65);
			
			index1 = (indexSet-1) * 3 + 1;
			
			if index1 == 1
				X(angles,1) = obs(1)*cosAdjRelAz;
				Y(angles,1) = obs(1)*sinAdjRelAz;
				
				X(angles,37) = obs(1)*cosPlusAngle + xPlusOffset;
				Y(angles,37) = obs(1)*sinPlusAngle + yPlusOffset;
				
			else	% index1 ~= 1
				X(angles,index1) = obs(1)*cosPlusAngle + xPlusOffset;
				Y(angles,index1) = obs(1)*sinPlusAngle + yPlusOffset;
			
			end;	% if index1 == 1, else...
			
			X(angles,index1+1) = obs(1)*cosMinusAngle + xMinusOffset;
			Y(angles,index1+1) = obs(1)*sinMinusAngle + yMinusOffset;
			
			X(angles,index1+2) = nan;
			Y(angles,index1+2) = nan;
			
				% Get the requested response values
				
			for plot = 1:numberPlots
				Z(angles,index1) = obs( dataIndex(plot) );
				Z(angles,index1+1) = obs( dataIndex(plot) );
				Z(angles,index1+2) = nan;
				
				index1 = index1 + 38;
				
				end;	% for plot = 1:numberPlots
			
			end;	% for angles = 1:39
			
		if fileError ~= [],
			break,
			end;
	
			% Now fill the curtain vectors which will be used
			% to draw lines from the base to the data value
			% for the largest angle that contains data.
					
		dIndex = (indexSet-1) * 3 + 1;
		cIndex = (indexSet-1) * 5 + 1;
		notDone = 1;
		angles = 39;
		while notDone == 1
			if Z(angles,dIndex) > -10000
				XCurtain(cIndex) = X(angles,dIndex);
				YCurtain(cIndex) = Y(angles,dIndex);
				
				if indexSet == 1
					XCurtain(cIndex) = X(angles,dIndex+36);
					YCurtain(cIndex) = Y(angles,dIndex+36);
					
					end;	% if indexSet == 1
				
				XCurtain(cIndex+1) = XCurtain(cIndex);
				YCurtain(cIndex+1) = YCurtain(cIndex);
				
				XCurtain(cIndex+2) = X(angles,dIndex+1);
				YCurtain(cIndex+2) = Y(angles,dIndex+1);
				
				XCurtain(cIndex+3) = X(angles,dIndex+1);
				YCurtain(cIndex+3) = Y(angles,dIndex+1);
				
				XCurtain(cIndex+4) = nan;
				YCurtain(cIndex+4) = nan;
				
				for plot = 1:numberPlots
					ZCurtain(cIndex,plot)   = Z(angles,dIndex);
					ZCurtain(cIndex+1,plot) = 0;
					ZCurtain(cIndex+2,plot) = 0;
					ZCurtain(cIndex+3,plot) = Z(angles,dIndex);
					ZCurtain(cIndex+4,plot) = nan;
						
					dIndex = dIndex + 38;
					
					end;	% for plot = 1:numberPlots
					
				notDone = 0;
				
				end;	% if Z(angles,dIndex) ~= nan
				
			angles = angles - 1;
				
			end;	% while notDone == 1
			
		sets
	
		end;	% for sets = 1:12
		
		% Make the last angle set the same as the first.
	
	X(:,38) = X(:,1);
	Y(:,38) = Y(:,1);
			
		% Make the 37 & 38th columns of responses the same 
		% as the first for all plot sets.
		
	for plot = 1:numberPlots
		Z(:,plot*38-1) = Z(:,(plot-1)*38+1);
		Z(:,plot*38) = Z(:,(plot-1)*38+1);
		
		end;	% for plot = 1:numberPlots
		
	fclose(rfid);
	
	if saveMatVariables == 1
		save 725PP2B1 X Y Z XCurtain YCurtain ZCurtain...
									numberPlots numberAngles;
		end;

end;	% if loadMatVariables == 1, else

	% Set the figure to draw into.
	
figure(1);

	% Set some graph parameters.


colormap(hot(90));
map = colormap;
colormap( map(27:90,:) );

if numberPlots == 4
	subplot(2,2,1);
	DrawGraph( X, Y, Z(:,1:38), XCurtain, YCurtain, ZCurtain(:,1:1), ViewP );
	
	subplot(2,2,2);
	DrawGraph( X, Y, Z(:,39:76), XCurtain, YCurtain, ZCurtain(:,2:2), ViewP );
	
	subplot(2,2,3);
	DrawGraph( X, Y, Z(:,77:114), XCurtain, YCurtain, ZCurtain(:,3:3), ViewP );
	
	subplot(2,2,4);
	DrawGraph( X, Y, Z(:,115:152), XCurtain, YCurtain, ZCurtain(:,4:4), ViewP );

elseif numberPlots == 2
	subplot(1,2,1);
	DrawGraph( X, Y, Z(:,1:38), XCurtain, YCurtain, ZCurtain(:,1:1), ViewP );
	
	subplot(1,2,2);
	DrawGraph( X, Y, Z(:,39:76), XCurtain, YCurtain, ZCurtain(:,2:2), ViewP );
	
else	% numberPlots == 1
	if pair3D2DFlag == 1
		subplot(1,2,1);
		DrawGraph( X, Y, Z, XCurtain, YCurtain, ZCurtain, ViewP );
	
		subplot(1,2,2);
		ViewP = [0,90];
		DrawGraph( X, Y, Z, XCurtain, YCurtain, ZCurtain, ViewP );
		
		v = axis;
		text(0,v(4)+55,0,'Cimel: Green (7/25 1-1 SunZA=53-50,98-100)','Horiz','right');
		text(-80,v(4)+35,0,'Percent Polarized  ','Horiz','right');		
		text(-80,v(3)-35,0,'View Zenith (degrees)  ','Horiz','right');
	
	else	% pair3D2DFlag == 0
		DrawGraph( X, Y, Z, XCurtain, YCurtain, ZCurtain, ViewP );
		
		v = axis;
		text(0,v(4)+55,0,'Cimel: .50-.59 (7/25 1-1 SunZA=53-50,98-100)','Horiz','right');
		text(0,0,v(6)+20,'Percent Polarized','Horiz','center');		
		text(0,0,v(5)-30,'View Zenith (degrees)  ','Horiz','center');
		
	end;	% if pair3D2DFlag == 1, else...
		
end;	% numberPlots == 4, else...

colorbar;

if makeMovie == 1
	M = moviein(10);
	angle = 10;
	for j = 1:10
		view(angle, 35)
		M(:,j) = getframe;
		angle = angle + 35;
		end
	save movie2 M;
	
	end;
