gpt4 book ai didi

确定 Y 轴标签和位置的算法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:12:39 29 4
gpt4 key购买 nike

给定一个 y 值数组,例如 [-3400, -1000, 500, 1200, 3790],我如何确定“好的”Y 轴标签并将它们放置在网格上?

           ^
---(6,000)-|---
|
---(4,000)-|---
|
---(2,000)-|---
|
<------(0)-+---------------------------------------->
|
--(-2,000)-|---
|
--(-4,000)-|---
V

最佳答案

您可以按照以下方式进行:

  1. 计算出您想要的标签数量 (n)。结果可能没有那么多标签,但会很接近。我要 n = 6
  2. 确定您认为“漂亮”的数字。您只想查看 1、2、5、10、20、50 等步骤(在本例中,漂亮的数字是 1、2 和 5)还是 1、2、4、5、6、8 等步骤, 10, …也好吗?我将只考虑 1、2 和 5。
  3. 找出数列的最小值(min)和最大值(max),其余的数字无关紧要。 (最小 = -3400, 最大 = 3790)
  4. 计算标签之间理想但丑陋的步长为 uglyStep = (max - min)/(n - 2)。我们为底部和顶部的标签减去两个。 (丑陋的步骤 = 1797)
  5. 计算 uglyStep 的数量级为 magnitude = 10 ^ floor(log10(uglyStep))。 (幅度 = 1000)
  6. 通过将幅度乘以所有漂亮数字再乘以 10,选择最佳漂亮步骤。然后选择它与 uglyStep 之间差异最小的数字。这将是 prettyStep。 (prettyStep = 2000)
  7. 计算底部和顶部标签的位置为 bottom = floor(min/prettyStep) * prettySteptop = ceil(max/prettyStep) * prettyStep。请注意,/ 表示正常的数学除法,而不是类似 C 语言的整数除法。 (底部 = -4000, 顶部 = 4000)
  8. bottomtop 之间可被 prettyStep 整除的每个数字都有一个标签。 (-4000, -2000, 0, 2000, 4000)

如果您不希望 minmax 非常接近 bottomtop<,则可能需要进行一些修改.

此外,它有时会表现得有些奇怪,例如对于 min = 0max = 3002,它选择 0, 500, 1000, 1500, 2000, 2500, 3000, 3500,但是对于max = 3005,它使用 0, 1000, 2000, 3000, 4000

关于确定 Y 轴标签和位置的算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6285165/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com