在图形轴上自动选择对数和线性刻度
Automatically choose between log and linear scale on graph axis
我有一个用 Java 编写的 Web 应用程序。它有一个散点图页面,使用用户可以将结果发送到的 JFreeChart 库。结果是成对的双打,不属于任何特定分布。它们可能非常倾斜或不倾斜,具体取决于用户select绘制的内容。
目前,用户可以选择 select 是否需要对数或线性 Y 轴。如果结果包含任何小于或等于零的双精度数,我还有一段代码会禁用对数 Y 轴选项。
客户已提交功能请求"Make web application automatically choose the correct type of Y-Axis (log vs linear)"。这可能吗?有谁知道合适的算法来测试结果会建议一种轴类型优于另一种轴类型?
使用对数刻度适用于呈指数增长的图形。
您可以通过以对数标度绘制它来检查指数增长,看看它是否呈线性。
您可以尝试查看高度差 Y_{i+1}-Y_{i} 的统计数据(resp. 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) ) 并取两者中较小的一个。
我从未对此进行过测试,但我认为这将 select 曲线看起来最线性的比例,这通常是人们想要的。它也相当快。如果您的数据非常嘈杂,您可能需要对此进行改进。
我有一个用 Java 编写的 Web 应用程序。它有一个散点图页面,使用用户可以将结果发送到的 JFreeChart 库。结果是成对的双打,不属于任何特定分布。它们可能非常倾斜或不倾斜,具体取决于用户select绘制的内容。
目前,用户可以选择 select 是否需要对数或线性 Y 轴。如果结果包含任何小于或等于零的双精度数,我还有一段代码会禁用对数 Y 轴选项。
客户已提交功能请求"Make web application automatically choose the correct type of Y-Axis (log vs linear)"。这可能吗?有谁知道合适的算法来测试结果会建议一种轴类型优于另一种轴类型?
使用对数刻度适用于呈指数增长的图形。
您可以通过以对数标度绘制它来检查指数增长,看看它是否呈线性。
您可以尝试查看高度差 Y_{i+1}-Y_{i} 的统计数据(resp. 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) ) 并取两者中较小的一个。
我从未对此进行过测试,但我认为这将 select 曲线看起来最线性的比例,这通常是人们想要的。它也相当快。如果您的数据非常嘈杂,您可能需要对此进行改进。