使用图形生成器创建带有分组 Y 数据的图形<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />你好,
我是一名热带生态学家,专门研究亚马逊树冠。 我正在撰写博士论文,并使用 JMP Pro(我是一个没有编程经验的新用户)对我的数据运行 PLS 和其他分析。 我有一个大型树叶数据集,按树、叶冠层(阳光或阴影)和叶龄分组。 在我的第一个分析中,我有 12 棵树,其中 4 棵树既有遮阳叶又有遮阳叶,其余的只有遮阳叶。 我需要为不同的叶子性状创建图表,例如叶子含水量、叶子厚度、叶子鲜重和干重、碳含量百分比等,需要构建这些图表:
X 轴 = 叶龄
Y = 按树木、按阳光和树冠位置分组的叶子性状(例如叶子厚度)
我一直在尝试创建这些图表,但我不断得到一个图表,该图表将每棵树的 Y 比例分开,当我尝试将阳光和阴影分组到图表中时,一切都会变得更糟。 如果有人能建议我如何创建这些 Y 分组图以及如何最好地自动生成大量图表,我将非常感激。 非常感谢您的帮助!
回复:使用图形生成器创建带有分组 Y 数据的图形非常感谢您的及时回复。 事实上,一些数字列已经进入字符模式。 我现在已经纠正了这个问题,我的图表有意义并显示出惊人的模式,非常非常感谢!
回复:使用图形生成器创建带有分组 Y 数据的图形是的,这是一个有用的线索。 看起来平均 RoC 列是作为字符列而不是数字列,并且 JMP 将其仅视为名称列表。 您可以在“列信息”对话框中修复该问题。 将数据类型更改为数值,并将建模类型更改为连续。
回复:使用图形生成器创建带有分组 Y 数据的图形非常感谢 MS 和 Xan 的建议,稍后当我需要让我的图表看起来足够好以供发布时,我将研究 Illustrator 和 OmniGraffle。 目前,我正在创建大量图表,以便向主管展示数据的初始可视化效果。
到目前为止,我已经创建了第一组线图,代表叶子随着年龄增长的不同物理特性(叶子厚度、面积、干重等)和化学特性(%C、%nN 等含量)。 在这些帖子的历史中可以看到这样一张叶子厚度图的演变。 在您的帮助下,我成功创建了线图,表示每棵树每个树冠位置的每个叶龄的叶子组的平均值。 我现在正在尝试创建一组新的图表来表示这些相同的物理和化学从一个叶龄到下一个叶龄的平均变化率 (avg RoC)。 然而,我很早就遇到了问题。 我根据 Excel 中不同叶子属性的平均值计算了平均 RoC (avg RoC=y2-y1/x2-x1),然后将数据导入到新的 JMP 数据表中。 然而,当我尝试为平均 RoC 创建折线图时,事情又开始出错。 正如您从下图中看到的,负 Y 轴值由于某种原因被颠倒了,在下面所示的情况下,最大负平均 RoC 值为 -23.155…(我已经仔细检查了我的数据,这个值是正确的)甚至被重新排列到中间的某个位置?! 我尝试过勾选和取消勾选行顺序,当我打开 Y 轴设置窗口时,我在正确的最小值和最大值之前找到了这一行:
格式:0为-0.004850; 56 是 5.805832
我猜这与它有关,但我不明白它是如何工作的或我如何纠正它。 我还查看了该图的脚本,但找不到任何对此的引用。 你能帮我解决这个问题吗?

预先非常感谢您的帮助,
张柏芝
回复:使用图形生成器创建带有分组 Y 数据的图形在 Mac 上,OmniGraffle 是一款易于使用的矢量图形应用程序。要在 JMP 输出上使用它,请使用从 JMP 打印并选择另存为 PDF。 OmniGraffle 可以打开 PDF 文件。 Adobe Illustrator 可以处理更多格式,但更难使用且更昂贵。 一些分析师将这种图形清理称为“后期制作”编辑,而且它(目前)还不是 JMP 的专长。
回复:使用图形生成器创建带有分组 Y 数据的图形要添加参考线,只需双击轴即可打开轴设置面板。 您可以在此处指定一条或多条参考线的值、颜色和样式。
对于上面脚本示例中的图形,通过以下代码添加 60 处的灰色 y 轴参考线:
report(gb)[scalebox(2)]<<ADD ref="" line=""></ADD>
我所说的矢量绘图程序并不是指绘图软件,而是通用绘图软件,例如 Adobe Illustrator,可以编辑图形的任何方面。 只需从 JMP 复制并粘贴到 Illustrator 中即可。 学习基础知识并不难。
回复:使用图形生成器创建带有分组 Y 数据的图形你好女士,
非常感谢您的回复,我将尝试您的建议,稍后删除整个组框,因为我需要继续并向我的主管发送一些图表,以便稍后我会进行更多实验。 不过,我能否再问一个关于这些图的问题,如何在 0 上添加一条灰线。
我对你提到的“矢量绘图程序”感兴趣,我能问一下你用什么软件吗? 我使用 MAC,在谷歌搜索“MAC 的矢量绘图程序”后,我对这些程序的作用有点困惑,它们似乎不是为了创建图形而设计的,您是否将图形导入到这些程序中,然后根据需要添加或删除内容? 我不知道这是否是我想要的方向,这类程序是不是很难学? 我之前曾收到过学习 Sigmaplot(我在 Mac 上使用 Paralleles)或学习 R、Matlab 或 Python 编程的建议,但我对这些选项有点困惑。 通过我的大学,我可以使用 Sigmaplot 和 Matlab。 我尝试过 SIgmaplot,但没有取得多大进展,我还没有尝试过 Matlab。 我已经在计算机上安装了 R,但我仍然无法安装一些 Python 模块。 对于所有这一切的任何建议和/或建议,我将非常感激,因为我目前对选择感到不知所措!
回复:使用图形生成器创建带有分组 Y 数据的图形整个组框可以删除,但我不知道如何仅删除标题。 它似乎是一种特殊的(未记录的)类型的展示盒。
下面是有关如何删除组框的示例。 它还显示了如何添加新的组标签。
dt = open("$sample_data\Big Class.jmp");
gb=graph Builder(
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ), Group X( :sex ) ),
);
Report( gb )[Graphbuildergroupbox( 1 )] << delete;
Report( gb )[framebox( 1 )]<<ADD text="" annotation=""></ADD>
我使用图形生成器作为发现数据中的模式和关系的快速方法,并且所有高级选项都允许查找相当复杂的模式。 然而,一旦我选择了图表,我几乎总是将其放入矢量绘图程序中,在用于演示文稿或手稿之前可以对其进行详细编辑。
回复:使用图形生成器创建带有分组 Y 数据的图形哈拉·赞,
再次非常感谢您的及时回复。
1. 我尝试了您的建议,在 X 组中使用“大小”消息,但这只是将 X 组标头移动到与实际 Canopy 位置相同的级别,如下图所示:

我已经进入“首选项”,除了将 X 组边缘更改为图表底部之外,没有任何内容可以格式化 X 组。
关于解释删除 X 组标题的必要性,这是因为我不需要它。 无论如何,我必须添加注释来解释图形图例中的“SU”和“SH”标签的含义,因此标题是不必要的。 我什至尝试删除列的名称,这样就没有标题,但显然不允许没有名称的列。
我注意到在下面包含的脚本中,X 组变量是使用“”声明的,我认为这些变量用于文本/标题名称,如 X 变量中一样。 不知道为什么X集团也这么声明? 实际上,我刚刚将 X Group 的名称更改为 Canopy Position,现在将其声明为 Y 变量,所以我猜测当变量名称包含符号时使用“”,对吗?
Variables(
X( :Name( "Leaf Age Class (age in cummulative weeks)" ) ),
Y( :thickness ),
Group X( :"SU-SHCanopyPos", Size(1), Levels( 2 ) ),
Overlay( :tree )
),
好吧,到目前为止,我尝试过的任何方法都不起作用,我很困惑为什么无法自定义 X 和 Y 组标头,而使用所有其他标头可以轻松完成此操作,这似乎有点设计错误?! 您或其他人对如何摆脱 X Group 标头有更多想法吗?
非常感谢,
张柏芝
回复:使用图形生成器创建带有分组 Y 数据的图形1. 您能否详细解释一下删除 Group X 标头的必要性? 您一定想以某种方式给面板贴上标签。 如果您想要不同的样式,您可以在“首选项”中解决它。 我确实注意到您可以通过使用 X 组中的大小消息来隐藏级别名称:
Open( "$SAMPLE_DATA/Big Class.jmp" );
Graph Builder(
Variables( X( :height ), Y( :weight ), Group X( :sex, Size( 1 ) ) ),
Elements( Points( X, Y ), Smoother( X, Y ) )
);
1b. 学习 JSL 显然并不太难。 我这么说并不是因为我已经使用它太久了,这对我来说很容易,而是因为今年夏天我们有几位学生实习生,他们在几天内完成了不错的项目,在几周内完成了复杂的项目。 无论如何,“帮助”菜单中的“脚本索引”和您已经发现的“保存到脚本”是快速上手的关键。
2. 太棒了。
3. 我忘记了嵌套的 X 轴如何将线一直连接起来。 一个丑陋的解决方法是将 Canopy 与您的覆盖变量连接起来,但是这样每行都会有不同的颜色,您必须手动更改一些颜色以匹配树值。
回复:使用图形生成器创建带有分组 Y 数据的图形哈拉·赞,
非常感谢您的及时回复。
关于您的评论:
1. 是的,我昨晚得出了同样的结论,并且花了一个令人沮丧的上午和下午试图重写图形脚本的某些部分以使其执行我想要的操作。 然而,由于我的编程经验非常少,所以我并没有走得太远! 我已经弄清楚了 95% 的不同代码部分的用途,但我无法重写任何内容或添加一行代码来摆脱 X 组标签。 下面我粘贴了最新图表的脚本(抱歉,我不知道如何将其保存到单独的文件中)。 我尝试过采用 X 组变量声明的“名称”部分,但它不起作用。 我还尝试添加一条类似于消除图形标题的调度行,但这也不起作用。 你能帮我解决这个问题吗? 我一直在避免学习编程,因为我有很多工作要做,并且花了一个月左右的时间(非常有希望!)来学习编程语言似乎花了太多时间,但我已经到了我认为这是不可避免的地步,学习一些基本脚本以便能够修改图形生成器中现有的可用图形会有多困难? 您对此有什么建议吗?
Graph Builder(
Size( 868, 525 ),
Show Footer( 0 ),
Lock Scales( 1 ),
Auto Stretching( 0 ),
Variables(
X( :Name( "Leaf Age Class (age in cummulative weeks)" ) ),
Y( :thickness ),
Group X( :Name( "SU/SHCanopyPos" ), Levels( 2 ) ),
Overlay( :tree )
),
Elements( Line( X, Y, Legend( 5 ), Row order( 0 ), Summary Statistic( "Mean" ) ) ),
SendToReport(
Dispatch(
{},
"Leaf Age Class (age in cummulative weeks)",
ScaleBox,
{Show Major Ticks( 0 ), Show Minor Ticks( 0 ), Rotated Labels( "Automatic" )}
),
Dispatch( {}, "thickness", ScaleBox, {Min( 0.12 ), Max( 0.46 ), Inc( 0.05 ), Minor Ticks( 1 )} ),
Dispatch( {}, "", ScaleBox, {Min( 0 ), Max( 0 ), Inc( 1 ), Minor Ticks( 0 )} ),
Dispatch( {}, "", ScaleBox( 2 ), {Min( 0 ), Max( 0 ), Inc( 1 ), Minor Ticks( 0 )} ),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
5,
Properties( 0, {Marker( "FilledCircle" ), Marker Size( "Medium" ), Fill Color( 0 )} ),
Properties( 1, {Line Color( -16715009 ), Marker( "FilledCircle" ), Marker Size( "Medium" ), Fill Color( 0 )} ),
Properties( 2, {Line Color( 73 ), Marker( "FilledCircle" ), Marker Size( "Medium" ), Fill Color( 0 )} ),
Properties( 3, {Line Color( 24 ), Marker( "FilledCircle" ), Marker Size( "Medium" ), Fill Color( 0 )} ),
Properties( 4, {Line Color( -16739840 ), Marker( "FilledCircle" ), Marker Size( "Medium" ), Fill Color( 0 )} ),
Properties( 5, {Line Color( 36 ), Marker( "FilledCircle" ), Marker Size( "Medium" ), Fill Color( 0 )} ),
Properties( 6, {Line Color( 14 ), Marker( "FilledCircle" ), Marker Size( "Medium" ), Fill Color( 0 )} ),
Properties( 7, {Line Color( 0 ), Marker( "FilledCircle" ), Marker Size( "Medium" ), Fill Color( 0 )} ),
Properties( 8, {Line Color( 75 ), Marker( "FilledCircle" ), Marker Size( "Medium" ), Fill Color( 0 )} ),
Properties( 9, {Line Color( 1 ), Marker( "FilledCircle" ), Marker Size( "Medium" ), Fill Color( 0 )} ),
Properties( 10, {Line Color( 20 ), Marker( "FilledCircle" ), Marker Size( "Medium" ), Fill Color( 0 )} ),
Properties( 11, {Line Color( 42 ), Marker( "FilledCircle" ), Marker Size( "Medium" ), Fill Color( 0 )} )
)}
),
Dispatch( {}, "400", LegendBox, {Set Title( "Tree" )} ),
Dispatch( {}, "graph title", TextEditBox, {Set Text( "" )} ),
Dispatch( {}, "Y title", TextEditBox, {Set Text( "Leaf Thickness (mm)" )} ),
Dispatch( {}, "Graph Builder", FrameBox, {Marker Size( 2 ), Line Width Scale( 3 )} ),
Dispatch( {}, "Graph Builder", FrameBox( 2 ), {Marker Size( 2 ), Line Width Scale( 3 )} )
)
);
2. 非常感谢 Unicode 提示,它完成了工作。
3. 我尝试将 Canopy 和 Leaf Age 嵌套在一起,但不喜欢结果,因为它连接了图表。 既有阳叶又有阴叶的树最终会出现一根连续的长线,阳线和阴线连在一起,这让事情变得混乱。 因此,我所做的是将叶龄等级 O/S1 的两个不同年龄(以周为单位)放在一起,如下图所示。

一如既往地非常感谢您的帮助。
张柏芝
回复:使用图形生成器创建带有分组 Y 数据的图形干得好,塞西莉亚,从我的简短描述中弄清楚了所有这些。
1. 我认为没有办法在实时视图中关闭 Group X 标签。 您可以右键单击并将其移至底部,也可以在“首选项”>“平台”>“图形生成器”中更改其样式。 或者,您可以记录图表,这会形成死视图,然后使用“fat plus”选择工具删除其中的一部分。
2. JMP 没有上标样式,但上标数字有特殊的 Unicode 字符,您可以在名称中使用这些字符。 如果该论坛支持的话,这里有一个示例:m²。
3. X 轴在分组级别内是相同的(以便允许跨组进行视觉比较)。 但是,您可以在 X 轴上将 Canopy 和 Leaf Age 嵌套在一起。 在这种情况下,缺失的子级别将被省略,这听起来像你想要的。
回复:使用图形生成器创建带有分组 Y 数据的图形哈拉·赞,
非常感谢您的建议,它们很准确。 在你和杰夫的帮助下,我几乎已经完成了我想要创建的图表。 下面是我到目前为止得出的图表:

关于这些图表我还有三个问题:
1. 如何摆脱X Group传奇“SU/SHCanopyPos”? 我尝试过双击并右键单击图例并使用脚本(用我不存在的编程技能!),但我找不到摆脱这个图例的方法。
2. 如何在 Y 图例中为某些文本(ei 单位,例如 m2)添加上标?
3. 我认为这个问题有点棘手:正如您在 X 分组中看到的那样,在我将“以周为单位的年龄”数据连接到叶龄类别后,我最终得到了两个单独的 O/S1 年龄类别。 这是因为该年龄段的阳叶寿命(61 周)比阴叶(79 周)短。 有没有一种方法可以让我为每个顶篷位置只获得一个 O/S1 年龄级别,但每个级别都有正确的“周龄”?
最后,我使用列切换器来创建类似的图表,但不太喜欢它,我发现它有点麻烦。 因此,我尝试了脚本选项,发现它更加直接。
再次非常感谢您的帮助,
张柏芝
回复:使用图形生成器创建带有分组 Y 数据的图形嗨塞西莉亚,
为了将所有树放在一张图上,您可以将 Tree 放入 Overlay 槽中(确保 Tree 列被标记为名义型,因为否则连续变量可能会被分箱)。 那么 Canopy 变量必须位于 X 组或 Y 组插槽之一。
如果你真的想要全部对于一个图中的线条,您可以创建一个新变量来连接 Tree 和 Canopy,然后用该变量进行覆盖。 为此,请创建一个新的字符列并为其指定一个连接其他两列的公式。 就像是:树|| “”|| :天篷。 “||”是文本连接操作。
您可以使用类似的方法附加树龄值: :年龄段 || "(" || Char(:以周为单位的年龄) || ")"
您可以通过将“值顺序”属性添加到“列信息”对话框中的“Canopy”列来控制 SU/SH 顺序。
要创建大量相似的图形,您可以使用列切换器(在红色小三角 > 脚本 > 列切换器下)以交互方式执行此操作,或使用 JSL 脚本以编程方式执行此操作(红色小三角 > 脚本 > 保存到脚本窗口,然后编辑 Y 名称)。
xan
回复:使用图形生成器创建带有分组 Y 数据的图形你好,杰夫,
非常感谢您的回复以及您花时间创建示例图表,并对我在原始帖子中没有提供足够的信息表示歉意。 你的图表实际上很好地说明了我遇到的问题。 以您的图表为例:
1. 感谢您提供有关在阳光和阴影叶冠位置使用叠加角色的提示,这解决了一个问题。 我一直在图表左侧对不同的树使用 Y 组角色,这给了我一个看起来像你的图表,但水平排列而不是垂直排列。 我已经使用覆盖角色更新了我的图表,如下所示:

但是,我希望以上内容能够:
1. 是一个单独的图,而不是每棵树的图。
2. 我想在括号中添加每个叶龄类别代表的等效周数,例如 Y1(1)、Y2(2) 等。 我将此数据放在数据表的单独列中,如何在 JMP Pro 中连接两个或更多列?
2.我还重新创建了您的第二张图(我非常喜欢这张图,因为它比前一张图要少一些),如下所示:

我也想要上面的:
1. 成为一张图,而不是每棵树一张图
2. 切换座舱盖位置的顺序,使 SU 在左侧,SH 在右侧。 我已经颠倒了 X 和 Y 轴的顺序,但找不到 X 和 Y 分组角色的此选项。
在组织图表以正确显示信息后,我想找到一种创建大量相似图表但仅更改 Y 轴的方法。
希望以上内容能够解答我的疑问,再次感谢您的帮助。
张柏芝
回复:使用图形生成器创建带有分组 Y 数据的图形嗨,CCHB,
我不确定你到底在找什么。
我模拟了一些数据并将其附加在此处,以便您可以看到我开始的内容。
这是我使用图表顶部的 X Group 角色创建的图表。 这将为您提供每棵树的一个图表。
我还在“覆盖”角色中使用“阳光”或“阴影”列,为同时拥有这两种颜色的树获取一根用于阳光的线和一根用于阴影的线。

或者,您可以使用图表右侧 Y 组角色中的“阳光”或“阴影”列来获取此信息。

如果我没有猜对,请更完整地描述您想要什么系列的图表,我们可以尝试向您展示如何创建它们。
-杰夫