我在一个报告中有双变量、单向和图形生成器图表。 应用了行图例,因此所有数据点都是具有特定颜色的字母数字。 行图例是使用 JMP 默认配色方案制作的,我的图表生成器图表使用 JMP 默认配色方案作为其叠加图例,但由于某种原因,它分配颜色的顺序与其他图表不同。 请参见下面的示例:
对于 LSW 对象,此可变性图表按红色、绿色、蓝色、橙色的顺序着色。

然而,图形构建器的颜色顺序为蓝色、红色、绿色、紫色,同时从行图例中保留了正确的字母数字标签。

我发现的唯一解决方法是将颜色属性保存到 Beam_L1 columb,但问题是它不会在过滤器更改时自动重新计算(这可以更改 BEAM_L1 对象的数量)。 行图例和图形构建器颜色确实会随过滤器自动更改,但不幸的是,它们使用不同的着色顺序,即使它们都使用 JMP 默认配色方案。
我在相关线程:
在 Graph Builder 之外,JMP 会在需要两种颜色时跳过绿色以避免常见的红/绿颜色不足。 然而,Graph Builder 更动态一些,需要能够在不改变前两种颜色的情况下从两种颜色变为三种颜色,因此它从一开始就重新排列它们(每组 3 种颜色都围绕色轮旋转)。这只会发生在带有“JMP”标签的颜色主题上,因此您可以通过使用不同的颜色主题来避免双重排序。
就 exclude 的处理而言,没有改变行为的选项。 我有时使用值颜色或添加虚拟值来绕过任何动态灵敏度。
使用与行图例颜色(在所有其他图表中使用)不同的逻辑对图表生成器颜色的任何评论。 图形生成器始终考虑排除的颜色行(即使它不在图例中显示那些排除的项目)并且没有地方可以关闭它,而基于行图例的着色您可以选择考虑排除的行(但是与图形生成器不同,在考虑排除的行时,即使在图表日期中不存在,这些项目也会显示在图例中)
那么有没有办法让图表生成器在分配颜色时不考虑排除的行?
设置值颜色似乎与 Graph Builder 颜色相匹配,但我的可变性图表似乎具有由行图例设置的自己的颜色。 他们都使用 JMP defualt 颜色主题,他们似乎以不同的方式对该主题进行采样?
编辑:由于我不同的过滤需求,只要我不排除任何 BEAM_L1 值,似乎一切都匹配。 所以如果我没有过滤(包括所有 beam_L1 值),颜色匹配。 但是,当我排除 BEAM_L1 时,变量图表上的颜色会重置,因此第一个 BEAM_L1 始终为红色,而图形生成器上的颜色保持给定 BEAM_L1 的颜色,但是字母数字标签会正确更改(可能是因为这是按行设置的传奇)。
基本上,Graph Builder 颜色似乎总是考虑排除的行,而行图例颜色在排除行时对颜色主题重新采样。
如果您将 BEAM_L1 的列属性“Value Color”设置为您想要的颜色,然后启动 Chart Builder,BEAM_L1 覆盖图表时使用的颜色即使在过滤时也会保留。
JMP 13.2.1
Names Default To Here( 1 );
dt = New Table( "class",
Add Rows( 40 ),
New Column( "Age",
Numeric,
"Ordinal",
Format( "Fixed Dec", 5, 0 ),
Set Property(
"Value Colors",
{12 = -13977687, 13 = -3780931, 14 = -4222943, 15 = -13596966, 16 = -2211217, 17 =
-10562780}
),
Set Values(
[12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 17, 17, 17]
)
),
New Column( "Height",
Numeric,
"Continuous",
Format( "Fixed Dec", 5, 0 ),
Set Values(
[59, 61, 55, 66, 52, 60, 61, 51, 60, 61, 56, 65, 63, 58, 59, 61, 62, 65, 63, 62, 63,
64, 65, 64, 68, 64, 69, 62, 64, 67, 65, 66, 62, 66, 65, 60, 68, 62, 68, 70]
)
)
);
dt << Graph Builder(
Variables( X( :age ), Y( :height ), Overlay( :age ) ),
Elements( Box Plot( X, Y, Legend( 6 ) ) ),
Local Data Filter(
Add Filter(
columns( :age ),
Where( :age == {12, 13, 14, 15} ),
Display( :age, Size( 160, 90 ), List Display )
)
)
);