我有一个用Java编写的Web应用程序。它有一个散点图页面,使用用户可以将结果发送到的JFreeChart库。结果是双打对,不属于任何特定分布。根据用户选择绘制的内容,它们可能非常偏斜。
目前,用户有一个下拉菜单,可以选择是否需要对数或线性Y轴。如果结果包含任何小于或等于零的双打,我还有一段禁用对数Y轴选项的代码。
客户端已提交功能请求“使Web应用程序自动选择正确类型的Y轴(log vs linear)”。这甚至可能吗?有没有人知道合适的算法来测试结果,这会建议一种轴类型超过另一种轴?
答案 0 :(得分:1)
答案 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))并选择两者中较小的一个。
我从未测试过这个,但我认为这会选择曲线看起来最线性的比例,这通常是人们想要的。它也很快。如果您的数据非常嘈杂,您可能需要对此进行改进。