在图形轴上自动选择对数和线性比例

时间:2015-03-31 10:32:58

标签: algorithm math graph

我有一个用Java编写的Web应用程序。它有一个散点图页面,使用用户可以将结果发送到的JFreeChart库。结果是双打对,不属于任何特定分布。根据用户选择绘制的内容,它们可能非常偏斜。

目前,用户有一个下拉菜单,可以选择是否需要对数或线性Y轴。如果结果包含任何小于或等于零的双打,我还有一段禁用对数Y轴选项的代码。

客户端已提交功能请求“使Web应用程序自动选择正确类型的Y轴(log vs linear)”。这甚至可能吗?有没有人知道合适的算法来测试结果,这会建议一种轴类型超过另一种轴?

2 个答案:

答案 0 :(得分:1)

使用对数比例适用于呈指数级增长的图表。

您可以通过以对数刻度绘制指数来检查指数增长,看它是否看起来是线性的。

请参阅Test for exponential growth

答案 1 :(得分:1)

您可以尝试查看高度差Y_ {i + 1} -Y_ {i}的统计数据(分别为log(Y_ {i + 1}) - log(Y_i))。

更准确地说,我假设您正在绘制一对对(X_i,Y_i),并且您已经通过X坐标对它们进行了排序:X_1< = X_2< = ..< = X_n。另外,让Y_min和Y_max为Y的最大值和最小值。当然我们需要Y_min> 0。

然后你可以计算Y_ {i + 1} -Y_ {i}的标准差除以(Y_max - Y_min)(相应的是log的标准差(Y_ {i + 1}) - log(Y_ { i})除以(log(Y_max)-log(Y_min))并选择两者中较小的一个。

我从未测试过这个,但我认为这会选择曲线看起来最线性的比例,这通常是人们想要的。它也很快。如果您的数据非常嘈杂,您可能需要对此进行改进。