![]() |
1
103
很久以前,我编写了一个图形模块,很好地涵盖了这一点。挖掘灰色体量可获得以下结果:
所以范围=0,25,50,…,225250 通过以下步骤,您可以获得良好的刻度范围:
在这种情况下,21.9除以10^2得到0.219。这是<=0.25,我们现在有0.25。乘以10^2等于25。 让我们看一看带有8个刻度的相同示例:
下面是实现此算法而不使用查找表等的代码:
一般来说,记号数包括底部记号,因此实际的y轴段比记号数少一个。 |
![]() |
2
22
下面是我正在使用的一个PHP示例。此函数返回包含传入的最小和最大Y值的漂亮Y轴值数组。当然,此例程也可以用于X轴值。 看起来不错的。我添加了一些示例数据,并展示了这些示例的结果。
样本数据的结果输出
|
![]() |
3
9
|
![]() |
4
6
听起来打电话的人没有告诉你他想要的范围。 因此,您可以自由更改端点,直到它可以很好地被标签计数整除。
查找数据系列的最大值和最小值。让我们把这几点称为:
这符合方程式:
可能有很多解决方案,所以就挑一个吧。大多数时候,我打赌你可以设置
所以试试不同的整数
直到偏移量“很好” |
![]() |
5
3
Gamecat最初的答案似乎大部分时间都有效,但试着插入“3个刻度”作为所需的刻度数(对于相同的数据值15、234、140、65、90)……它似乎给出了73的刻度范围,除以10^2后得到0.73,对应于0.75,这给出了75的“不错”刻度范围。 然后计算上限: 75*圆形(1+234/75)=300 下限是: 75*圆形(15/75)=0 …这无疑是有用的,但它是4个刻度(不包括0)而不是所需的3个刻度。 只是令人沮丧的是,它没有100%的时间工作…这很可能是由于我的错误,当然! |
![]() |
6
3
答案是 Toon Krijthe 他大部分时间都在工作。但有时它会产生过多的蜱虫。负数也不行。解决这个问题的总体方法是可以的,但是有更好的方法来处理这个问题。您想要使用的算法将取决于您真正想要得到什么。下面我将向您展示我在JS绘图库中使用的代码。我已经测试过了,而且它总是有效的(希望如此)。以下是主要步骤:
让我们开始吧。首先是基本计算
我使用“好看的蜱虫”来避免像7、13、17等蜱虫。我在这里使用的方法非常简单。在需要时使用zeroTick也很好。这样的情节看起来更专业。你会在这个答案的末尾找到所有的方法。 现在你必须计算上界和下界。这对于零滴答非常容易,但在其他情况下需要更多的努力。为什么?因为我们想把图的中心放在上限和下限之间。看看我的代码。有些变量是在这个范围之外定义的,有些变量是保存整个代码的对象的属性。
干杯 |
![]() |
7
3
转换这个 answer 像 斯威夫特4
|
![]() |
8
1
如果你想要10步+0,这就像一个符咒
|
![]() |
9
1
|
![]() |
10
1
此解决方案基于 Java example 我找到了。
|
![]() |
11
0
谢谢你的提问和回答,非常有帮助。Gamecat,我想知道你是如何决定滴答声范围应该四舍五入到什么程度的。 要在算法上做到这一点,就必须在上面的算法中添加逻辑,以便对较大的数字进行良好的缩放? 你怎么认为? |
![]() |
12
0
|
![]() |
13
0
上述算法没有考虑最小值和最大值之间的范围太小的情况。如果这些值远远高于零呢?然后,我们有可能以大于零的值开始y轴。此外,为了避免我们的线条完全位于图表的上方或下方,我们必须给它一些“呼吸的空气”。 为了涵盖这些情况,我(在PHP上)编写了上述代码:
|
![]() |
14
0
|
![]() |
feasega · 聚合物模拟-2个节点之间的最短路线,适用于所有节点 5 月前 |
![]() |
Alisa Petrova · 在有向图中更改一对顶点以创建循环 5 月前 |
![]() |
b39b332d · 使用C++标准库实现高效间隔存储 9 月前 |
![]() |
ABGR · 二叉树的直径——当最长路径不通过根时的失败案例 10 月前 |
![]() |
EpicAshman · 数独棋盘程序中同一列和同一行出现两次的数字 10 月前 |