在 JMP 18 中,
我有一组按类别分组的数据。X 轴表示类别(字符),Y 轴表示十六进制值。
我有三列数据:
1) 原始值为十六进制
- 字符名义
- :mv
- 例如0x066F
2):mv 转换为十进制数
- 连续数字格式
- :mv_number
例如 1647
3) :mv_number 转换回十六进制,但没有 0x
- 字符 - 名义
- :mv_hex_标签
例如 066F
有没有办法绘制这些数据的图表,以便 Y 轴上的刻度标记采用十六进制,并且按数字顺序排列,而不是按字母顺序排列?
您还可以查看显示十六进制值,然后使用值排序列属性来设置图表中的顺序。
作为第三个选项,使用十六进制标签,并将数字列拖到此放置区 - 用于排序。
也可以通过右键单击/按...排序/其他...来完成相同的操作。
只需几秒钟 - 与条目数量无关。

读完这三条建议,我大概知道答案了。谢谢!
我最终做的是,用原始数据列“mv”设置 Y 轴。然后,我将十进制版本的数据拖到 Y 轴旁边,并将其放在“排序依据”部分:

这确实正确地排列了值的顺序。
现在,我唯一的遗憾是我失去了尺度感。像 03DB 这样的值就在 0668 旁边。这在很大程度上让我丧失了对呈现双模态的数据点的直觉。
在这里,您可以看到数据在一个区域通过,而在其他区域失败:

由于精确的十六进制值并不重要,我认为我要做的是探索创建参考线,让我知道 0x100、0x800、0xF00 在哪里......
要添加一些结构,您可以在 Y 轴上使用嵌套级别:

dt = New Table( "Hex",
Add Rows( 20 ),
New Column( "Hex",
Character,
Set Values(
{"0x0EB6", "0x00E0", "0x0052", "0x0059", "0x0052", "0x0037", "0x002E",
"0x0025", "0x0C74", "0x0C6B", "0x0C5E", "0x0C55", "0x0C2E", "0x0C19",
"0x0BE7", "0x0B9A", "0x0B8E", "0x0B53", "0x0B30", "0x00B5"}
)
),
New Column( "Hex Group", Character, "Nominal", Formula( Substr( :Hex, 1, 4 ) ) ),
New Column( "decimal",
Formula( Hex To Number( Substr( :Hex, 3 ) ) )
)
);
dt << Graph Builder(
Variables(
X( :decimal ),
Y( :Hex Group, Order By( :decimal, Ascending) ),
Y( :Hex, Position( 1 ), Order By( :decimal, Ascending ) ),
Color( :Hex Group )
),
Elements( Bar( X, Y( 1 ), Y( 2 ) ) )
);