在数据表上创建热图并使用脚本更新颜色渐变你好,
我有很多数据想从数据表中绘制为热图。 我已在下面附有示例数据表图像的图像,以及在数据表上创建热图的步骤。 它遵循以下步骤:
- 使用制表后获取数据表
- 堆叠所有列(“类型”除外)。 然后对整个数据集进行汇总,以找到最小值,中位数和最大值。
- 从步骤2中获取最小值,中值和最大值,然后将它们放入颜色渐变值中。
运行这些步骤后,数据表的结果如下所示。 目前,我手动执行第3步,在“摘要”中输入的任何值都会输入到颜色渐变值中。 有没有一种方法可以使用脚本从Summary数据表中获取值(最小值,中位数,最大值)并将其输入到颜色渐变中?
我还附加了样本数据集。


数据表脚本编写回复:在数据表上创建热图并使用脚本更新颜色渐变这是将设置颜色渐变的JSL
names default to here(1);
dt=current data table();
dt:"Group:0, test:A"n << set property("color gradient",{"Green Yellow Red", Range(
{-142.439058836207, -42.6065023706896, -97.9221899694684}
)});
我发现将值插入所需列表的最简单方法是使用类似于以下代码:
Max = -142.439058836207;
Min = -42.6065023706896;
Mid = -97.9221899694684;<BR />
Eval(
Substitute(
Expr(
dt:"Group:0, test:A"n << set property(
"color gradient",
{"Green Yellow Red", Range( {__Max__, __Min__, __Mid__} )}
);
),
Expr( __Max__ ), Max,
Expr( __Min__ ), Min,
Expr( __Mid__ ), Mid
)
);回复:在数据表上创建热图并使用脚本更新颜色渐变感谢您的输入! 我将您的脚本用作一个很好的起点,但我希望使其更具动态性。
- 因此,在脚本中,您可以手动将max,min和mid设置为值,从而可以通过图像的step2中的输出摘要表来设置它们。 基本上,此最大,最小和中值在Group:0测试的范围内:AI希望获取整个表的最大,最小和中值范围。
- 我必须将按值(1)的颜色单元添加到脚本中,并且我一直在尝试设置反向比例,并且一直在收到错误消息,知道如何执行此操作?
- 是否可以安全地假设要在所有列上运行颜色渐变,但在发送的代码之外需要一个for循环? 还是有其他方法可以做到这一点?
names default to here(1);
dt=current data table();
dt:"Group:0, test:A" << set property("color gradient",{"Green Yellow Red", Range(
{-142.439058836207, -42.6065023706896, -97.9221899694684}
)});
Max = -142.439058836207;
Min = -42.6065023706896;
Mid = -97.9221899694684;
Eval(
Substitute(
Expr(
dt:"Group:0, test:A"n << set property(
"color gradient",
{"Green Yellow Red", Range( {__Max__, __Min__, __Mid__} )},
)
:dt << Color Cell by Value( 1 );
),
Expr( __Max__ ), Max,
Expr( __Min__ ), Min,
Expr( __Mid__ ), Mid
)
);回复:在数据表上创建热图并使用脚本更新颜色渐变这是一个自动执行Big Class示例数据表的列着色的示例。您应该能够从该脚本中分支出来,以使其能够处理您的数据
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
colList = dt << get column names( continuous, string );
For( i = 1, i <= N Items( colList ), i++,
Eval(
Substitute(
Expr(
Summarize(
dt,
myMax = Max( As Column( __col__ ) ),
myMin = Min( As Column( __col__ ) ),
myMid = Mean( As Column( __col__ ) )
);
Column( __col__ ) <<
set property(
"color gradient",
{"Green Yellow Red",
Range( {__Max__, __Min__, __Mid__} ), "Reverse Scale"}
) << Color Cell by Value( 1 );
),
Expr( __col__ ), colList[i],
Expr( __Max__ ), myMax,
Expr( __Min__ ), myMin,
Expr( __Mid__ ), myMid
)
)
);回复:在数据表上创建热图并使用脚本更新颜色渐变当我按原样运行您的脚本(使用大类数据集)时,它崩溃了,我得到以下消息:
Name Unresolved: myMax in access or evaluation of 'myMax' , myMax/*###*/
at line 25 in Script 4.jsl
回复:在数据表上创建热图并使用脚本更新颜色渐变我的错误...在编写脚本时,myMax等的初始值从以前的执行中继承了下来。下面是一个修复
Names Default To Here( 1 );
Clear Symbols();
dt = Open( "$SAMPLE_DATA/big class.jmp" );
colList = dt << get column names( continuous, string );
For( i = 1, i <= N Items( colList ), i++,
Eval(
Substitute(
Expr(
Summarize(
dt,
myMax = Max( __col__ ),
myMin = Min( __col__ ),
myMid = Mean( __col__ )
)
),
Expr( __col__ ), colList[i]
)
);
Eval(
Substitute(
Expr(
Column( __col__ ) <<
set property(
"color gradient",
{"Green Yellow Red",
Range( {__Max__, __Min__, __Mid__} ), "Reverse Scale"}
) << Color Cell by Value( 1 );
),
Expr( __col__ ), colList[i],
Expr( __Max__ ), myMax,
Expr( __Min__ ), myMin,
Expr( __Mid__ ), myMid
)
);
);