大家下午好,
我想创建一个图表,其中的点恰好落在每个箱线图和相关的小提琴图内。
使用图形生成器,我意识到这些点在框内没有对齐。
有人知道如何解决这个问题吗?
我附上照片。

如果您使用的是 Windows,您还可以从字符映射表中找到这些:

还有一个选项可以创建插件/自定义函数来执行此操作。 这并不完美,但可能会有帮助? 这是可能的功能的快速示例(如果我要创建一个,我会使其更加健壮):
Names Default To Here(1);
replace_str = Function({str}, {Default Local},
aa_unicode = Associative Array();
aa_unicode["\sigma"] = "\!U03C3";
aa_unicode["\mu"] = "\!U03BC";
aa_unicode["\subscript1"] = "\!U2081";
aa_unicode["\subscript2"] = "\!U00B2";
aa_unicode["\subscript3"] = "\!U00B3";
aa_unicode["\subscript4"] = "\!U2074";
return(Substitute(str, aa_unicode << get keys, aa_unicode << get values));
);
dt = New Table("Untitled 3",
Add Rows(0),
New Column("kg/m\subscript2"),
New Column("\sigma*\mu"),
New Column("\subscript1\subscript3")
);
wait(2);
For Each({col_name}, dt << Get Column Names(String),
Column(dt, col_name) << Set Name(replace_str(col_name));
);
我在维基百科上找到了代码
print("18F-FDG\!U00B9\!U2078");
"18F-FDG¹⁸"
亲爱的马克,
遗憾的是,像 JMP 这样的软件存在这些浪费时间的问题。
发表一些可以减少时间的文章将是一个很好的解决方案。
朱塞佩
非常感谢,
非常有用和果断的建议。
最好的祝愿
朱塞佩
PS 18F-FDG 以 18 作为 unicode 中的指数我找不到解决方案。 你知道该怎么做吗?
如果有一种更直接的方式来输入特殊字符就好了。 目前,我保留了一个脚本,其中包含我经常使用的符号的注释字符串。 可以省一点力气。
JMP 支持 UTF-8 和 UTF-16 Unicode 标准。 有关更多详细信息,请参阅脚本指南。它允许人们嵌入这些特殊字符而无需特殊处理。
JMP 还可以使用转义字符串“\!”打印此类字符后跟 Unicode 字符串。因此,为了包含您指定为标签的内容,我将打开一个脚本窗口并在窗口中放置以下打印命令
print("BMI (Kg / m\!U00B2)");
运行此行后,日志中将出现以下内容,您可以将其剪切并粘贴到标签中
"BMI (Kg / m²)"
我希望有一条更直接的路径,但我不知道有一条。有关完整 Unicode 字符集的详细信息,请参阅脚本指南

感谢您的建议。
我想知道如何显示例如组平方或 2 作为下标。
或者在前面的示例中显示高度的平方。
那么一般来说如何显示带有上标或下标的轴标签。
例如,如果我在纵坐标轴上写下 BMI (Kg / m ^ 2),我如何告诉 JMP“^ 2”是平方的,以避免使用 ^ 符号?
最好的祝愿
JMP 使用 Unicode 字符集,支持特殊字符集
é 和 ½ 等字符。 它保存文件时没有特殊的 Unicode
自动将字符转换为纯文本。 该选项由以下选项选择
默认。
换句话说,如果您将此类特殊的 Unicode 字符放入数据表中,它们就会显示


非常感谢你,
感谢您的宝贵建议,我终于达到了目标。
回想起来,解决方案很简单,但先验我没有考虑过你写的内容。 我问你一个好奇心:你知道如何将上标和下标放在x轴或纵坐标上的变量标签上吗?
我注意到 JMP 缺乏这种简单但常见的可能性。
考虑到 JMP 的重要性,这个缺点相当反常。
最好的祝愿
朱塞佩
必须完成的所有工作都是按照您所描述的方式获取数据表,并将其传递给图形生成器以创建您希望它堆叠数据的显示,然后运行图形生成器。为了说明这一点,给定下表,其中包含 4 个连续变量(可以根据需要具有任意多个连续变量),

一个只是使用
表=>堆栈
并堆叠所有连续的列,并确保组列也被携带

我还将“堆叠数据列”重命名为“测量”,将“源标签列”重命名为“变量”
现在,图形生成器可以使用生成的数据来创建所需的图形

下面的脚本首先从 JMP 提供的示例数据表之一创建示例数据表,然后堆叠数据,最后使用图形生成器创建上述图表
Names default to here(1);
// Create a sample data table that has multiple continuous variables with 2 groups
// Open Data Table: semiconductor capability.jmp
// → Data Table( "semiconductor capability" )
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
dt:Site << set name("Group");
dt << select where( :Group<=2 & :lot_id == "lot01" );
dt << invert row selection;
dt << delete rows;
dtSub = dt << Subset(
All rows,
columns( :Group, :NPN1, :NPN2, :NPN3, :NPN4 )
);
close(dt, nosave);
Wait(5); // Wait 5 seconds so one can see the initial data table
// Now just modify the data shape to set it up for Graph Builder to display the
// data as required
// First Stack all of the continuous variables into one column, and create a second
// column that indicates what column each row's value came from
dtStack = dtSub <<
Stack(
columns( :NPN1, :NPN2, :NPN3, :NPN4 ),
Source Label Column( "Variable" ),
Stacked Data Column( "Measurement" )
);
// Now graph the data placing the Variable and Group columns on the X axis and the
// Measurement column on the Y axis
// Also, remove the label from the Y axis
Graph Builder(
Size( 528, 458 ),
Show Control Panel( 0 ),
Variables(
X( :Variable ),
X( :Group, Position( 1 ) ),
Y( :Measurement ),
Color( :Group )
),
Elements(
Contour( X( 1 ), X( 2 ), Y, Legend( 14 ) ),
Box Plot( X( 1 ), X( 2 ), Y, Legend( 13 ) ),
Points( X( 1 ), X( 2 ), Y, Legend( 15 ) )
),
SendToReport(
Dispatch( {}, "Y title", TextEditBox, {Set Text( "" )} ),
Dispatch(
{},
"Graph Builder",
FrameBox,
{DispatchSeg( Poly Seg( "Violin (NPN1>>1)" ), {Transparency( 0.5 )} ),
DispatchSeg( Poly Seg( "Violin (NPN1>>2)" ), {Transparency( 0.5 )} ),
DispatchSeg( Poly Seg( "Violin (NPN2>>1)" ), {Transparency( 0.5 )} ),
DispatchSeg( Poly Seg( "Violin (NPN2>>2)" ), {Transparency( 0.5 )} ),
DispatchSeg( Poly Seg( "Violin (NPN3>>1)" ), {Transparency( 0.5 )} ),
DispatchSeg( Poly Seg( "Violin (NPN3>>2)" ), {Transparency( 0.5 )} ),
DispatchSeg( Poly Seg( "Violin (NPN4>>1)" ), {Transparency( 0.5 )} ),
DispatchSeg( Poly Seg( "Violin (NPN4>>2)" ), {Transparency( 0.5 )} )}
),
Dispatch(
{},
"400",
LegendBox,
{Legend Position( {14, [3, 4], 13, [0, 1, 2, -3], 15, [5, 6]} )}
)
)
);
非常感谢,
我尝试了该过程,但它不起作用。
我想在x轴上同时放置几个连续变量,并且每个变量被分成2组。 在 y 轴上我没有任何变量。
目的是将所有变量一起显示,并将每个变量与两组进行比较。
如果我按照你的建议做了,我一次只能在 y 轴上放置一个变量,因为如果我将所有变量放在一起,问题会再次出现,即箱线图中的点不对齐;而我想要同时有几个变量。
朱塞佩
将 X 列和 Overlay 列拖动到 X 轴,然后将 Overlay 列移动到颜色放置区域。
