用JSL设置列宽?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />有没有办法使用 JSL 设置列的显示宽度?当我创建表时,默认情况下列太宽。我尝试过玩设置列宽但它不起作用。
我知道列宽存储在某处,因为如果我手动设置列宽,保存数据集,然后再次打开它,瞧,宽度会被保留。我只是不知道如何在 JSL 中做到这一点。
谢谢!
回复:用 JSL 设置列宽?这个小表达式将设置显示宽度,以适应数据表的所有字符列中最长值的宽度,在您设置的最小和最大宽度内,通过使用您也可以设置的平均字符宽度。 通常,数字列默认具有良好的宽度,因此更改这些宽度也留给读者作为练习。 我认为这个例程对于大型数据表来说会非常慢,所以在今天之前我没有费心去编写它,但事实证明它非常快,只需要几秒钟就可以在 22 个字符列上超过 200K 行的数据表上运行。
xpr_resizeCols = Expr(
Local( {list_widths, list_colNames, num_length, num_charWidth,num_maxWidth, num_minWidth },
num_charWidth = 6.5; // set number of pixels per character's average width
num_maxWidth = 400; // set maximum desirable column width
num_minWidth = 45; // set miniumum desirable column width
list_widths = {};
list_colNames = Current Data Table() << get column names( character );
For( i = 1, i <= N Items( list_colNames ), i++, // i = 1
list_temp = list_colNames[i] << get values;
num_length = 0;
For( j = 1, j <= N Items( list_temp ), j++,
If( Length( list_temp[j] ) > num_length,
num_length = Length( list_temp[j] )
)
);
Try( list_colNames[i] << set display width( Max( num_minWidth, Min( num_maxWidth, num_length * num_charWidth ) ) ) );
Insert Into( list_widths, num_length * num_charWidth );
);
);
Write(
"\!N\!tColumns resized to fit contents, within limits " || Char( num_minWidth ) || " to " || Char( num_maxWidth ) ||
" pixels."
);
);Global Pragmatica LLC® 是一家总部位于美国的 JMP 定制合作伙伴,提供定制 JSL 和 JMP 插件工作供聘用;如果您想讨论一个项目,请随时通过 [erin dot vang at globalpragmatica dot com] 与我联系。
回复:用 JSL 设置列宽?我已经尝试了该线程中所有建议的解决方案,但没有一个有效。我正在使用 JMP 13.2.1。
- 如果列标题超出您尝试设置的宽度,“设置宽度”不会执行任何操作。
- 如果列标题超出您尝试设置的宽度,则“设置显示宽度”不会执行任何操作。
- 如果我将列命名为“xxx”等简短名称,将宽度设置为 5,将显示宽度设置为 5,然后将列命名为“xxx”,则列宽将保持较窄。但是,一旦我使用代码column("xxx") << Set Name("一些长列名");然后列的宽度会扩展以尝试(未成功)适合列名称。
因此,最初的问题仍然是:JMP 是否有办法使用 JSL 设置列宽,或者我是否必须自己手动调整这数百列和数十个 JMP 文件的列宽?当您不需要在数十个文件中执行数百次时,告诉某人“手动执行即可”确实很容易。 
回复:用 JSL 设置列宽?彼得
版本 12 有一条新的专栏消息:设置显示宽度。
Try( Column(dtCopy,"Viable cell density") << Set Display Width(120) ):
Try( Column(dtCopy,"Viable cell density") << Set Display Width(120) );
戴夫
回复:用 JSL 设置列宽?嗨,马特
我可以设置列宽以适合几列的最长标题和单元格内容吗? 最近,我尝试对单元进行着色以绘制晶圆图,但我必须手动调整列的宽度。
谢谢!
用JSL设置列宽?对于这种情况,您可以使用短虚拟名称来强制表观宽度服从字段宽度。
dt = New Table( "test");
col=dt << New Column( "Curr Serious");
colname=col<<GET name=""></GET>
但是,通过设置字段宽度属性来控制表格外观并不是通用解决方案,也不能与通过拖动边框手动更改列相媲美。 例如,如果宽度设置为比单元格内容少的字符,则显示“###”或类似内容而不是值。
用JSL设置列宽?嗨马特,
如果列标题很短,那就有效。但是,我的列名称较长,并且您似乎无法将字段宽度设置为比列标题短的任何内容。例如:
dt = New Table( "test");
dt << New Column( "Curr Serious");
column("Curr Serious") << Get Field Width(); // default 10;
column("Curr Serious") << Set Field Width(30);
column("Curr Serious") << Set Field Width(3); // shrinks the column but not to 3
用JSL设置列宽?你好:
dt = New Table( "test");
dt << New Column( "new");
column("new") << Get Field Width(); // default 10;
column("new") << Set Field Width(30);
column('new") << Get Field Width(); // now shows 30;
Show Properties(:new); // log shows a large number of properties, including field width;
希望这可以帮助,
-马特