这个问题涉及到这里的另一个正在进行的问题: 格式石头和英镑是否正确?
我想这将是更适合在这里提出作为一个单独的问题,决定做什么之前。
正如从上面的链接所描述的,我代表在TChart重量如石头和磅。
在我决定是否改变我目前正在使用的数据类型(双人间)从上面的意见建议,我想看看我怎么能显示我的石头图表,英镑,我最初的想法。
见我操纵进行演示这个示例图像:
问题是图表的左轴,如在图像状态的音符 - 到达下一个整数(石头在这种情况下)之前的图表递增高达0.99(磅)。 例如:
- 03.00
- 达到3.00前02.99 <0.99 =最大数量
- 02.98
- 02.97
我需要的左轴是设置如下所示:
- 03.00
- 达到3.00前02.13 <0.13 =最大数量
- 02.12
- 02.11
- 02.10
而且还显示所有的英镑部分的标签。
有没有达到一个整数(石头),在此之前,我可以用它来设定为1.00(磅)最高值的设置的地方?
目前似乎没有什么可以做有很大的意义,从我从另一个问题不解的是,我应该使用整数和代表,因为只有英镑。
我想看看它如何做任何改变,虽然前,最好我希望图表附近逗留一样的形象,如果可能的。
希望这是有道理的。
谢谢。
UPDATE
只是想我会更新我最终得到了工作的变化。
所有信用卡必须去大卫赫弗南为他的坚持在解释我要去哪里错了,写详细的信息和建议。
还有一些工作,我需要做的,但现在这里是更新的图我现在有:
我没有做过值的标签,但是从上面这个样本图像是我使用的值:
- 15.2
- 15.3
- 15.11
- 15.13
- 16.0
- 16.4
你不能使用你的当前表示绘制一个合理的图表。 假设你有一个具有以下值的条形图:
10st 12lb
10st 13lb
11st 0lb
11st 1lb
图表看起来就像这样:
忘掉轴标注了一会儿。 看看吧之间的差异。 每个相邻值之间的差是1磅。 但是,图讲述了一个完全不同的故事。 我用条形图这里,但原则适用于所有图表类型。
底线是,你需要与重量的真实十进制表示以表示你的权重值。 您表示不服从算术的基本规律。 所以,半个石头必须是0.5。 试图代表用数字0.07简单地要求痛苦的世界一半。
使用这个公式由石头和英镑转换为权重的真实浮点表示:
FloatingPointWeightValue := Stones + Pounds/14.0;
或者,如果您只存储斤那么简单
FloatingPointWeightValue := Pounds/14.0;
我建议你请确保Increment
轴的至少是1。如果你需要去小于那么你就必须要进入自定义坐标轴标签标题。 当您将自己的价值观,给他们的标签。 这将允许在图表中使用合理的标签来识别值。 例如:
Series1.Add(10 + 12/14, '10st, 12lb');
Series1.Add(10 + 13/14, '10st, 13lb');
Series1.Add(11 + 00/14, '11st, 0lb');
Series1.Add(11 + 01/14, '11st, 1lb');
其结果是这样的:
你会明显地写一堆辅助函数来处理这个问题。 我建议存储原始数据为英镑。 因此,第11一磅将被存储为11 * 14 + 1 = 155。然后,你有这些助手:
function StonesFromPounds(Pounds: Integer): Double;
begin
Result := Pounds / 14.0;
end;
function StonesPoundsLabel(Pounds: Integer): string;
begin
Result := Format('%dst %dlb', [Pounds div 14, Pounds mod 14]);
end;
然后将数据群是这样的:
Pounds := 152;
Series1.Add(StonesFromPounds(Pounds), StonesPoundsLabel(Pounds));
你有你如何为你的权重创建文本标签完全的自由。 如果你想超过13磅10ST更简洁的东西,那么你可以调整辅助功能,以您的需求。
现在,这已经相当长的答案,所以我就总结一下我的建议是:
- 当你获得的数据,从什么都源,从他们到达一个定义良好的存储格式,原始数据格式为准格式转换。
- 存储这些原始数据为整数,以磅为单位。
- 当您绘制的权重,转换为浮点值结石的单位
Stones := Pounds/14.0
。 - 副文本标签到您的情节,让您可以在人类可读的形式呈现权重的每个值。
- 做好准备,如果你需要的石头全值之间的标签权重来提供自定义标签的轴。
文章来源: Setting the Left Axis on a TChart to increment the decimal value up to .13?