叠加图自定义颜色(行颜色)为了绘制叠加图,我有一个 JMP 数据表,其中我以编程方式对每个设备的行进行了颜色编码。 (有 100,000 行的大表)当我在叠加图 X 与 Y 上绘制时,颜色显示正确(点是行颜色)。每个设备有几千个点,并且来自每个设备的所有数据始终具有相同的行颜色。
当我按设备对绘图进行分组时,JMP 会分配自己的配色方案,而不是行的颜色。 (在这种情况下不是我想要的)
对于我的绘图,我不想显示点,而是想用一条线连接这些点,并且我希望连接器颜色是我的行的颜色。
JMP 使连接器颜色成为恒定颜色,而不是我的行的颜色。 我可以获得不同连接器颜色的唯一方法是按设备分组。 但如果我按设备分组,颜色将不再与我的行颜色匹配!
我的数据表确实有 R、G、B 值列,因此我可以使用它,但不确定该怎么办?
顺便说一句,我在使用 GraphBuilder 执行此任务时也遇到了类似的问题......
任何建议,将不胜感激!
谢谢,
克里斯
回复:叠加图自定义颜色(行颜色)谢谢你! 这对我有用。
回复:叠加图自定义颜色(行颜色)几年前我问过类似的问题。 这是线程:
https://community.jmp.com/t5/Discussions/How-to-create-a-legend-in-Graph-Builder-which-preserves-row/mp/7983#M7977
回复:叠加图自定义颜色(行颜色)__fList__ 和 __mList__ 是 Substitute() 函数中的占位符。看
帮助==脚本索引==>函数==>替代
定义和示例
回复:叠加图自定义颜色(行颜色)吉姆,
你能定义一下吗
__fList__
和
__mList__
这些变量在您的代码示例中使用但未初始化/定义?
谢谢,
克里斯回复:叠加图自定义颜色(行颜色)克里斯,
请放心,您正在使用 JSL 来完成您想要做的事情。JSL 具有构建通用脚本的所有功能和能力。
回复:叠加图自定义颜色(行颜色)吉姆,谢谢你的代码,我想我明白了。 我真的很欣赏语法示例!现在对于我的情况,我需要概括它(我需要构建包含所有垃圾箱的字符串,直到运行时才知道),
我假设 __fList__ 只是您想要特定颜色的感兴趣列中的值列表。所以我假设这个表达式可能会变得更大,我的列表可能有 1000 个大项目,并且我可以在表达式中有几个不同的颜色箱。
今天晚些时候我可能有时间尝试一下,我会让你知道进展如何。
我看到的最困难的挑战是为我的广义案例构建下面的表达式,但我将首先尝试一个硬编码示例作为概念证明,如果我卡在表达式上,我可能会回到论坛。
再次感谢!
克里斯
Eval(
Substitute(
Expr(
dt:sex << set property( "value colors", {"F" = __fList__, "M" = __mList__} )
),
Expr( __fList__ ), fColorList,
Expr( __mList__ ), mColorList
)
);
Eval(
Substitute(
Expr(
dt:sex << set property( "value colors", {"F" = __fList__, "M" = __mList__} )
),
Expr( __fList__ ), fColorList,
Expr( __mList__ ), mColorList
)
);
// Set the row state colors
dt << Color by Column( :Sex );
回复:叠加图自定义颜色(行颜色)这是一个脚本,可以让您了解如何在设置行状态颜色和/或设置值颜色列属性时处理 RGB 颜色
Names Default To Here( 1 );
// Open a sample data table, and modify it to
// have 3 new columns representing the RGB values
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
dt << New Column( "R" );
dt << New Column( "G" );
dt << New Column( "B" );
For Each Row(
If(
:Sex == "F",
:R = Color To RGB( "red" )[1];
:G = Color To RGB( "red" )[2];
:B = Color To RGB( "red" )[3];,
:R = Color To RGB( "purple" )[1];
:G = Color To RGB( "purple" )[2];
:B = Color To RGB( "purple" )[3];,
)
);
// Here are a couple of examples of setting colors
// The first one just sets the row colors based upon
// the RGB colors from the :R, :G, :B columns
For( i = 1, i <= N Rows( dt ), i++,
colorList = {};
colorList[1] = :R[i];
colorList[2] = :G[i];
colorList[3] = :B[i];
Row State( i ) = Color State( colorList );
);
Wait( 10 );
dt << clear row states;
Wait( 5 );
// The next example, sets the row state colors by
// first setting the "Value Colors", column
// property, and then sets the row state colors
// based upon the "Value Colors"
// To set the "Value Colors", the below commented
// statement needs to be created using JSL
/*dt:sex << set property("value colors",
{"F" = {0.670588235294118, 0.0313725490196078, 0.988235294117647},
"M" = {0.941176470588235, 0.196078431372549, 0.274509803921569}});*/
// First we will create the female RGB color list
// Find a row that has the RGB colors we desire
rowList = dt << get rows where( :Sex == "F" );
// Since all values of R,G & B will be the same, only used the first
// selected row to create the list for the females
fColorList = {};
fColorList[1] = :R[rowList[1]];
fColorList[2] = :G[rowList[1]];
fColorList[3] = :B[rowList[1]];
// Repeat for the males
rowList = dt << get rows where( :Sex == "M" );
mColorList = {};
mColorList[1] = :R[rowList[1]];
mColorList[2] = :G[rowList[1]];
mColorList[3] = :B[rowList[1]];
// Substitute into a template of the Set Property structure
// the created RGB lists for females and males
Eval(
Substitute(
Expr(
dt:sex << set property( "value colors", {"F" = __fList__, "M" = __mList__} )
),
Expr( __fList__ ), fColorList,
Expr( __mList__ ), mColorList
)
);
// Set the row state colors
dt << Color by Column( :Sex );
回复:叠加图自定义颜色(行颜色)我很难根据您的描述直观地了解您得到的内容,但您可能需要了解叠加图如何通过手动选择一些颜色并保存脚本来将自定义颜色应用于您的组。然后我认为您可以编写自己的脚本来指定每个组所需的 RGB 值。您可能需要通过循环或其他方式构建脚本,但我确信这是可能的。
您是否有机会为数据集提供一个最小的工作示例来说明您所描述的内容?
回复:叠加图自定义颜色(行颜色)这很有帮助,当我“标记”一列(标签/取消标签)并按该列着色时,行颜色现在与我按该列绘图和分组时的颜色匹配,但现在我的问题是如何以编程方式设置该列中不同组的 RGB 值。我希望能够通过 RGB 值设置每种颜色。 不确定 JSL sytex。我有一列用于 R、G 和 B,并且可以创建一个包含所有 3 个列的串联列,然后按该列着色,但不确定如何以编程方式为不同组设置属性。
回复:叠加图自定义颜色(行颜色)我认为,通过为您正在使用的列设置列属性“值颜色”,您会更幸运地保留所需的颜色。在大多数情况下,“值颜色”是 JMP 默认的颜色。