<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: 如何统一设置标签位置在数据点上方或下方 in Discussions</title>
    <link>https://community.jmp.com/t5/Discussions/%E5%A6%82%E4%BD%95%E7%BB%9F%E4%B8%80%E8%AE%BE%E7%BD%AE%E6%A0%87%E7%AD%BE%E4%BD%8D%E7%BD%AE%E5%9C%A8%E6%95%B0%E6%8D%AE%E7%82%B9%E4%B8%8A%E6%96%B9%E6%88%96%E4%B8%8B%E6%96%B9/m-p/898300#M105820</link>
    <description>&lt;P&gt;One approach is via JSL - just add the offsets "manually" for all the labels - via a list:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="hogi_0-1756810431145.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/81748i6C05F515C1D58D42/image-size/medium?v=v2&amp;amp;px=400" role="button" title="hogi_0-1756810431145.png" alt="hogi_0-1756810431145.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;// create a list of identical offsets
labels = As list(Index(0,10))[1]; // surprise: the fist index is 0!
offset Expr = Expr(Label Offset());
offsets= For Each ({label}, labels, Insert Into(offset Expr,Eval List({label,0.,-20}))); // vertical offset: -20

// send the command to the Point plot
mySeg = current report()[FrameBox(1)] &amp;lt;&amp;lt; find seg(MarkerSeg);
Eval (Eval Expr(mySeg &amp;lt;&amp;lt;  Expr(Name expr(offset  Expr) )))&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 02 Sep 2025 10:54:41 GMT</pubDate>
    <dc:creator>hogi</dc:creator>
    <dc:date>2025-09-02T10:54:41Z</dc:date>
    <item>
      <title>如何统一设置标签位置在数据点上方或下方</title>
      <link>https://community.jmp.com/t5/Discussions/%E5%A6%82%E4%BD%95%E7%BB%9F%E4%B8%80%E8%AE%BE%E7%BD%AE%E6%A0%87%E7%AD%BE%E4%BD%8D%E7%BD%AE%E5%9C%A8%E6%95%B0%E6%8D%AE%E7%82%B9%E4%B8%8A%E6%96%B9%E6%88%96%E4%B8%8B%E6%96%B9/m-p/898256#M105817</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="屏幕截图 2025-09-02 145629.png" style="width: 750px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/81739i815EAEF0A51F0B8F/image-size/large?v=v2&amp;amp;px=999" role="button" title="屏幕截图 2025-09-02 145629.png" alt="屏幕截图 2025-09-02 145629.png" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 02 Sep 2025 07:13:06 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/%E5%A6%82%E4%BD%95%E7%BB%9F%E4%B8%80%E8%AE%BE%E7%BD%AE%E6%A0%87%E7%AD%BE%E4%BD%8D%E7%BD%AE%E5%9C%A8%E6%95%B0%E6%8D%AE%E7%82%B9%E4%B8%8A%E6%96%B9%E6%88%96%E4%B8%8B%E6%96%B9/m-p/898256#M105817</guid>
      <dc:creator>lwencx</dc:creator>
      <dc:date>2025-09-02T07:13:06Z</dc:date>
    </item>
    <item>
      <title>Re: 如何统一设置标签位置在数据点上方或下方</title>
      <link>https://community.jmp.com/t5/Discussions/%E5%A6%82%E4%BD%95%E7%BB%9F%E4%B8%80%E8%AE%BE%E7%BD%AE%E6%A0%87%E7%AD%BE%E4%BD%8D%E7%BD%AE%E5%9C%A8%E6%95%B0%E6%8D%AE%E7%82%B9%E4%B8%8A%E6%96%B9%E6%88%96%E4%B8%8B%E6%96%B9/m-p/898299#M105819</link>
      <description>&lt;P&gt;Dummy graph to play with:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="hogi_0-1756808879759.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/81746iC77382B3529D1275/image-size/medium?v=v2&amp;amp;px=400" role="button" title="hogi_0-1756808879759.png" alt="hogi_0-1756808879759.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Data Table( "Big Class" ) &amp;lt;&amp;lt; Select All Rows &amp;lt;&amp;lt; Label;
:weight &amp;lt;&amp;lt; Label( 1 );
:name &amp;lt;&amp;lt; Label( 0 );


Graph Builder(
	Size( 437, 428 ),
	Summary Statistic( "Median" ),
	Graph Spacing( 4 ),
	Variables( X( :name ), Y( :weight ) ),
	Elements( Points( X, Y, Legend( 4 ) ) ),
	Local Data Filter(
		Add Filter(
			columns( :name ),
			Where( :name == {"AMY", "BARBARA", "CAROL", "CHRIS", "CLAY", "DANNY"} ),
			Display( :name, N Items( 15 ), Find( Set Text( "" ) ) )
		)
	)
);&lt;/CODE&gt;&amp;nbsp;&amp;nbsp;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 02 Sep 2025 10:28:08 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/%E5%A6%82%E4%BD%95%E7%BB%9F%E4%B8%80%E8%AE%BE%E7%BD%AE%E6%A0%87%E7%AD%BE%E4%BD%8D%E7%BD%AE%E5%9C%A8%E6%95%B0%E6%8D%AE%E7%82%B9%E4%B8%8A%E6%96%B9%E6%88%96%E4%B8%8B%E6%96%B9/m-p/898299#M105819</guid>
      <dc:creator>hogi</dc:creator>
      <dc:date>2025-09-02T10:28:08Z</dc:date>
    </item>
    <item>
      <title>Re: 如何统一设置标签位置在数据点上方或下方</title>
      <link>https://community.jmp.com/t5/Discussions/%E5%A6%82%E4%BD%95%E7%BB%9F%E4%B8%80%E8%AE%BE%E7%BD%AE%E6%A0%87%E7%AD%BE%E4%BD%8D%E7%BD%AE%E5%9C%A8%E6%95%B0%E6%8D%AE%E7%82%B9%E4%B8%8A%E6%96%B9%E6%88%96%E4%B8%8B%E6%96%B9/m-p/898300#M105820</link>
      <description>&lt;P&gt;One approach is via JSL - just add the offsets "manually" for all the labels - via a list:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="hogi_0-1756810431145.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/81748i6C05F515C1D58D42/image-size/medium?v=v2&amp;amp;px=400" role="button" title="hogi_0-1756810431145.png" alt="hogi_0-1756810431145.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;// create a list of identical offsets
labels = As list(Index(0,10))[1]; // surprise: the fist index is 0!
offset Expr = Expr(Label Offset());
offsets= For Each ({label}, labels, Insert Into(offset Expr,Eval List({label,0.,-20}))); // vertical offset: -20

// send the command to the Point plot
mySeg = current report()[FrameBox(1)] &amp;lt;&amp;lt; find seg(MarkerSeg);
Eval (Eval Expr(mySeg &amp;lt;&amp;lt;  Expr(Name expr(offset  Expr) )))&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 02 Sep 2025 10:54:41 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/%E5%A6%82%E4%BD%95%E7%BB%9F%E4%B8%80%E8%AE%BE%E7%BD%AE%E6%A0%87%E7%AD%BE%E4%BD%8D%E7%BD%AE%E5%9C%A8%E6%95%B0%E6%8D%AE%E7%82%B9%E4%B8%8A%E6%96%B9%E6%88%96%E4%B8%8B%E6%96%B9/m-p/898300#M105820</guid>
      <dc:creator>hogi</dc:creator>
      <dc:date>2025-09-02T10:54:41Z</dc:date>
    </item>
    <item>
      <title>Re: 如何统一设置标签位置在数据点上方或下方</title>
      <link>https://community.jmp.com/t5/Discussions/%E5%A6%82%E4%BD%95%E7%BB%9F%E4%B8%80%E8%AE%BE%E7%BD%AE%E6%A0%87%E7%AD%BE%E4%BD%8D%E7%BD%AE%E5%9C%A8%E6%95%B0%E6%8D%AE%E7%82%B9%E4%B8%8A%E6%96%B9%E6%88%96%E4%B8%8B%E6%96%B9/m-p/898301#M105821</link>
      <description>&lt;P&gt;I'm not sure if you can easily adjust label offsets without scripting.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Below is very quick example how it might be possible to do it with JSL&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;Names Default To Here(1); 

dt = open("$SAMPLE_DATA/Big Class.jmp");

gb = dt &amp;lt;&amp;lt; Graph Builder(
	Size(525, 512),
	Show Control Panel(0),
	Variables(X(:age), Y(:height)),
	Elements(
		Points(X, Y, Legend(3), Summary Statistic("Mean"), Label("Label by Value"))
	)
);

frame = Report(gb)[FrameBox(1)];
seg = (frame &amp;lt;&amp;lt; FindSeg(Marker Seg(1)));
For(i = 0, i &amp;lt;= N Items(seg &amp;lt;&amp;lt; get markers), i++,
	Eval(EvalExpr(
		seg &amp;lt;&amp;lt; Label Offset(Expr(Eval List({i, -5, -5})));
	));
);
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 02 Sep 2025 09:32:29 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/%E5%A6%82%E4%BD%95%E7%BB%9F%E4%B8%80%E8%AE%BE%E7%BD%AE%E6%A0%87%E7%AD%BE%E4%BD%8D%E7%BD%AE%E5%9C%A8%E6%95%B0%E6%8D%AE%E7%82%B9%E4%B8%8A%E6%96%B9%E6%88%96%E4%B8%8B%E6%96%B9/m-p/898301#M105821</guid>
      <dc:creator>jthi</dc:creator>
      <dc:date>2025-09-02T09:32:29Z</dc:date>
    </item>
    <item>
      <title>Re: 如何统一设置标签位置在数据点上方或下方</title>
      <link>https://community.jmp.com/t5/Discussions/%E5%A6%82%E4%BD%95%E7%BB%9F%E4%B8%80%E8%AE%BE%E7%BD%AE%E6%A0%87%E7%AD%BE%E4%BD%8D%E7%BD%AE%E5%9C%A8%E6%95%B0%E6%8D%AE%E7%82%B9%E4%B8%8A%E6%96%B9%E6%88%96%E4%B8%8B%E6%96%B9/m-p/898379#M105835</link>
      <description>&lt;P&gt;&lt;SPAN&gt;Solved, thanks!&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="光伏供应链价格汇总.PNG" style="width: 999px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/81782iE490036BBAE34DDF/image-size/large?v=v2&amp;amp;px=999" role="button" title="光伏供应链价格汇总.PNG" alt="光伏供应链价格汇总.PNG" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;DIV&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt3 = Data Table("光伏供应链价格汇总");

obj1 = dt3 &amp;lt;&amp;lt; Graph Builder(
	Size(1476, 745),
	Show Control Panel(0),
	Legend Position("Inside Right"),
	Fit to Window("Off"),
	Variables(X(:日期), Y(:单价), Group X(:产品), Group Y(:型号)),
	Elements(
		Points(X, Y, Legend(5), Label("Label by Value"), Label Format("Fixed Dec", 7, 2)),
		Smoother(X, Y, Legend(6))
	),
	SendToReport(
		Dispatch({}, "日期", ScaleBox,
			{Min(min_date - 86400), Max(max_date + 86400), Interval("Day"), Inc(1),
			Minor Ticks(0), Label Row(
				{Label Orientation("Vertical"), Show Major Grid(0), Show Minor Grid(0)}
			)}
		),
		Dispatch({}, "单价", ScaleBox,
			{Min(0.2), Max(2.5), Inc(0.5), Minor Ticks(1),
			Label Row({Show Major Grid(0), Show Minor Grid(0)})}
		)
	)
);
Wait(1);
excluded_rows = dt3 &amp;lt;&amp;lt; Get Excluded Rows;&amp;nbsp; &amp;nbsp;//获取排除行矩阵
mm = N Row(excluded_rows);&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//获取排除行数
nn = (N Row(dt3) - mm) / 7;
report = obj1 &amp;lt;&amp;lt; Report;
indices = {4, 5, 8, 9, 10, 20, 21};
For(idx = 1, idx &amp;lt;= N Items(indices), idx++,
	i = indices[idx];
	frame = report[FrameBox(i)];
	For(j = 0, j &amp;lt;= nn, j++,
		seg = frame &amp;lt;&amp;lt; Find Seg(Marker Seg(1));
		seg &amp;lt;&amp;lt; Label Offset({j, -10, -10});
	);
);&lt;/CODE&gt;&lt;/PRE&gt;
Edit (jthi): Added JSL formatting&lt;/DIV&gt;</description>
      <pubDate>Wed, 03 Sep 2025 06:00:20 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/%E5%A6%82%E4%BD%95%E7%BB%9F%E4%B8%80%E8%AE%BE%E7%BD%AE%E6%A0%87%E7%AD%BE%E4%BD%8D%E7%BD%AE%E5%9C%A8%E6%95%B0%E6%8D%AE%E7%82%B9%E4%B8%8A%E6%96%B9%E6%88%96%E4%B8%8B%E6%96%B9/m-p/898379#M105835</guid>
      <dc:creator>lwencx</dc:creator>
      <dc:date>2025-09-03T06:00:20Z</dc:date>
    </item>
    <item>
      <title>Re: 如何统一设置标签位置在数据点上方或下方</title>
      <link>https://community.jmp.com/t5/Discussions/%E5%A6%82%E4%BD%95%E7%BB%9F%E4%B8%80%E8%AE%BE%E7%BD%AE%E6%A0%87%E7%AD%BE%E4%BD%8D%E7%BD%AE%E5%9C%A8%E6%95%B0%E6%8D%AE%E7%82%B9%E4%B8%8A%E6%96%B9%E6%88%96%E4%B8%8B%E6%96%B9/m-p/898413#M105841</link>
      <description>&lt;P&gt;As an alternative, you can use a more automated approach (e.g. if you don't want to type in he framebox indices manually or you use Overlay and there are more Segs):&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;find al lframeboxes&lt;/LI&gt;
&lt;LI&gt;for each framebox, find all segs&lt;/LI&gt;
&lt;LI&gt;for each seg, find all markers&lt;/LI&gt;
&lt;LI&gt;apply the offset&lt;/LI&gt;
&lt;/UL&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Data Table( "Big Class" ) &amp;lt;&amp;lt; Select All Rows &amp;lt;&amp;lt; Label;
:weight &amp;lt;&amp;lt; Label( 1 );
:name &amp;lt;&amp;lt; Label( 0 );

gb = dt &amp;lt;&amp;lt; Graph Builder(
	Size( 437, 413 ),
	Summary Statistic( "Median" ),
	Graph Spacing( 4 ),
	Variables( X( :height ), Y( :weight ), Wrap( :age ), Overlay( :sex ) ),
	Elements( Points( X, Y ), Smoother( X, Y, Legend( 2 ) ) )
);
	
fbs = Current Report() &amp;lt;&amp;lt; xpath( "//FrameBox" );

For Each( {frame}, fbs, 

	segs = (frame &amp;lt;&amp;lt; FindSegs);
	For Each( {seg}, segs,
		Try( // skip non-Marker-segs
			markers = seg &amp;lt;&amp;lt; get markers;
			For Each( {x, i}, markers,
				seg &amp;lt;&amp;lt; Label Offset( {i-1, -10, -10} ) 	
			);
		);	
	);
);&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 03 Sep 2025 08:31:19 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/%E5%A6%82%E4%BD%95%E7%BB%9F%E4%B8%80%E8%AE%BE%E7%BD%AE%E6%A0%87%E7%AD%BE%E4%BD%8D%E7%BD%AE%E5%9C%A8%E6%95%B0%E6%8D%AE%E7%82%B9%E4%B8%8A%E6%96%B9%E6%88%96%E4%B8%8B%E6%96%B9/m-p/898413#M105841</guid>
      <dc:creator>hogi</dc:creator>
      <dc:date>2025-09-03T08:31:19Z</dc:date>
    </item>
    <item>
      <title>Re: 如何统一设置标签位置在数据点上方或下方</title>
      <link>https://community.jmp.com/t5/Discussions/%E5%A6%82%E4%BD%95%E7%BB%9F%E4%B8%80%E8%AE%BE%E7%BD%AE%E6%A0%87%E7%AD%BE%E4%BD%8D%E7%BD%AE%E5%9C%A8%E6%95%B0%E6%8D%AE%E7%82%B9%E4%B8%8A%E6%96%B9%E6%88%96%E4%B8%8B%E6%96%B9/m-p/898414#M105842</link>
      <description>&lt;P&gt;Note to myself:&lt;BR /&gt;Cool, no expression handling is needed to get the correct "i-1" in&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;seg &amp;lt;&amp;lt; Label Offset( {i-1, -10, -10} ) &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;BR /&gt;The seg receives the message - sees "i" and looks it up: Eval(i) -&lt;/STRONG&gt;Similar to the column name in &lt;FONT face="courier new,courier"&gt;new column(column name)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;On the other hand, expression handling is needed for&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;Eval (Eval Expr(mySeg &amp;lt;&amp;lt;  Expr(Name expr(offset  Expr) )))&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;With&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;mySeg &amp;lt;&amp;lt;  offset Expr&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;one gets the error message:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="hogi_0-1756887922600.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/81792i37B3FAD86C6F406C/image-size/medium?v=v2&amp;amp;px=400" role="button" title="hogi_0-1756887922600.png" alt="hogi_0-1756887922600.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The Seg just checks the list of accepted messages and &lt;FONT face="courier new,courier"&gt;offset Expr&lt;/FONT&gt; is not listed.&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;Name Expr(offset Expr)&lt;/FONT&gt; is not checked&lt;/P&gt;
&lt;P&gt;- and &lt;FONT face="courier new,courier"&gt;Eval(offset Expr)&lt;/FONT&gt;&amp;nbsp;(like for&amp;nbsp;&lt;FONT face="courier new,courier"&gt;i&lt;/FONT&gt; inside the message) wouldn't make sense.&lt;/P&gt;</description>
      <pubDate>Wed, 03 Sep 2025 08:31:28 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/%E5%A6%82%E4%BD%95%E7%BB%9F%E4%B8%80%E8%AE%BE%E7%BD%AE%E6%A0%87%E7%AD%BE%E4%BD%8D%E7%BD%AE%E5%9C%A8%E6%95%B0%E6%8D%AE%E7%82%B9%E4%B8%8A%E6%96%B9%E6%88%96%E4%B8%8B%E6%96%B9/m-p/898414#M105842</guid>
      <dc:creator>hogi</dc:creator>
      <dc:date>2025-09-03T08:31:28Z</dc:date>
    </item>
  </channel>
</rss>

