cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Discussions

Solve problems, and share tips and tricks with other JMP users.
Choose Language Hide Translation Bar
ashwint27
Level III

Automatically Size/Scale Background Image to Fill Graph upon any change

I have pasted a background image into a Graph Builder chart.  I would like to, by default, always have the background image "Fill Graph", no matter what changes are being done to the graph.  Is there a way to do this?

Manually I get to the option by right-clicking the graph and going to Image >> Size/Scale >> Fill Graph.

1 ACCEPTED SOLUTION

Accepted Solutions
jthi
Super User

Re: Automatically Size/Scale Background Image to Fill Graph upon any change

I don't think you can that easily make that automatic, but you could create script and add shortcut to that or add it to tool bar to make it slightly easier to re-use. There are also some "tricks" you can do with graphic scripts to force-trigger actions but I wouldn't generally bother with those and I would just use shortcut. 

 

Example what could be done but I would NOT recommend due to different issues it could cause:

View more...
Names Default To Here(1);

dt = Open("$SAMPLE_DATA/Animals.jmp");
gb = dt << Graph Builder(
	Size(518, 448),
	Show Control Panel(0),
	Variables(X(:subject), Y(:miles)),
	Elements(Points(X, Y, Legend(5)))
);

Report(gb)[FrameBox(1)] << Add Image(
	Open(Convert File Path("$SAMPLE_IMAGES/black rhino footprint.jpg")),
	Transparency(0.9),
	Rotate(90),
	Bounds(
		Left(0.135416666666667),
		Right(3.26041666666667),
		Top(11.8333333333333),
		Bottom(-1)
	),
	SetSize({300, 210})
);

picseg = Report(gb)[FrameBox(1)] << FindSeg(PictSeg(1));
picseg << fill graph;
picseg << Lock(1);


// This part I wouldn't usually recommend using
Report(gb)[FrameBox(1)] << Add Graphics Script(function({this},
	Try(
		(this << FindSeg(PictSeg(1))) << Fill Graph;
	);	
));
-Jarmo

View solution in original post

4 REPLIES 4
hogi
Level XIII

Re: Automatically Size/Scale Background Image to Fill Graph upon any change

After creating a plot like this:

dt = Open( "$SAMPLE_DATA/Big Class Families.jmp" );
gb = Graph Builder(
	Graph Spacing( 4 ),
	Variables( X( :height ), Y( :weight ) ),
	Elements( Points( X, Y, Legend( 3 ) ), Smoother( X, Y, Legend( 4 ) ) ),
	SendToReport(
		Dispatch( {}, "Graph Builder", FrameBox,
			{Add Image(
				1,
				Set Blob(
Char To Blob("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", "base64compressed"), "png")
					,
				Bounds(
					Left( 50 ),
					Right( 60 ),
					Top( 80 ),
					Bottom( 100 )
				)
			)}
		)
	)
);

hogi_0-1761073193792.png

 

you can access the image via the report/Framebox and use the message  << fill Graph to resize the image.

fr = Report( gb )[FrameBox( 1 )];
imgSeg = fr << FindSegs();
imgSeg << Fill graph

hogi_2-1761073239741.png

 

jthi
Super User

Re: Automatically Size/Scale Background Image to Fill Graph upon any change

I don't think you can that easily make that automatic, but you could create script and add shortcut to that or add it to tool bar to make it slightly easier to re-use. There are also some "tricks" you can do with graphic scripts to force-trigger actions but I wouldn't generally bother with those and I would just use shortcut. 

 

Example what could be done but I would NOT recommend due to different issues it could cause:

View more...
Names Default To Here(1);

dt = Open("$SAMPLE_DATA/Animals.jmp");
gb = dt << Graph Builder(
	Size(518, 448),
	Show Control Panel(0),
	Variables(X(:subject), Y(:miles)),
	Elements(Points(X, Y, Legend(5)))
);

Report(gb)[FrameBox(1)] << Add Image(
	Open(Convert File Path("$SAMPLE_IMAGES/black rhino footprint.jpg")),
	Transparency(0.9),
	Rotate(90),
	Bounds(
		Left(0.135416666666667),
		Right(3.26041666666667),
		Top(11.8333333333333),
		Bottom(-1)
	),
	SetSize({300, 210})
);

picseg = Report(gb)[FrameBox(1)] << FindSeg(PictSeg(1));
picseg << fill graph;
picseg << Lock(1);


// This part I wouldn't usually recommend using
Report(gb)[FrameBox(1)] << Add Graphics Script(function({this},
	Try(
		(this << FindSeg(PictSeg(1))) << Fill Graph;
	);	
));
-Jarmo
hogi
Level XIII

Re: Automatically Size/Scale Background Image to Fill Graph upon any change

A good sign - twice the same recipe ; )
So, maybe not as bad as @jthi might fear ?

These are the kinds of actions I would put in a toolbar. This way, the function is always available, and there is no need to add special functions to individual graphs.

Nevertheless, @jthi 's Graphics script seems a very elegant solution.

Mainly depends on how much manual effort is acceptable to 

 


@ashwint27 wrote:

 ... have the background image "Fill Graph", no matter what changes are being done to the graph.  


 

Any resizing of the window doesn't require an update - the image sticks to the Framebox.
So, just after manual adjustments of the axis or the content, the graph has to be re-positioned.

On the other hand, one could think of a "FillGraph" option for images in Graph Builder. Fully automatic, without manual effort.
Worth to write a post in the JMP Wish List ?
Maybe not.

hogi
Level XIII

Re: Automatically Size/Scale Background Image to Fill Graph upon any change

@Ryan_Gilmore , besides getting back the old style for JSL code - any chance to get back the old Quoting?

Recommended Articles