设置在TChart左轴递增的十进制值高达0.13?(Setting the Left Axis on

2019-10-17 21:04发布

这个问题涉及到这里的另一个正在进行的问题: 格式石头和英镑是否正确?

我想这将是更适合在这里提出作为一个单独的问题,决定做什么之前。

正如从上面的链接所描述的,我代表在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

Answer 1:

你不能使用你的当前表示绘制一个合理的图表。 假设你有一个具有以下值的条形图:

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更简洁的东西,那么你可以调整辅助功能,以您的需求。

现在,这已经相当长的答案,所以我就总结一下我的建议是:

  1. 当你获得的数据,从什么都源,从他们到达一个定义良好的存储格式,原始数据格式为准格式转换。
  2. 存储这些原始数据为整数,以磅为单位。
  3. 当您绘制的权重,转换为浮点值结石的单位Stones := Pounds/14.0
  4. 副文本标签到您的情节,让您可以在人类可读的形式呈现权重的每个值。
  5. 做好准备,如果你需要的石头全值之间的标签权重来提供自定义标签的轴。


文章来源: Setting the Left Axis on a TChart to increment the decimal value up to .13?