用于在Incanter中添加误差条的惯用方法

时间:2012-04-25 21:01:28

标签: clojure incanter

我正在创建一个机器人对地标距离的信念。 x轴是测量的数量,y轴是到地标的距离,其应该包括误差条以指示该估计的置信度。

我无法找到一种基于方差值向图中添加误差线的好方法。目前,我正在每次测量时创建一个箱形图,方法是使用我的方差值生成有关均值的样本数据。这显然不是理想的,因为它在计算上效率低下,并且是我试图显示的信息的不精确表示。

有关如何执行此操作的任何想法?理想情况下,它将在xy-plot上,并且可以在不必使用JFreeChart命令的情况下完成。

1 个答案:

答案 0 :(得分:2)

我想我有一些非常接近的东西。首先让我们创建一些随机数据来绘制图形:

(def y (for [i (range 20)] (rand-int 100)))
user> (11 14 41 33 25 71 52 34 83 90 80 35 81 63 94 69 97 92 4 91)

现在创建一个情节。您可以使用xy-plot,但我更喜欢scatter-plot的外观。

(def plot (scatter-plot (range 20) y))
(view plot)

这给了我以下情节

Random Data

现在我们必须定义一个带点(x,y)的函数,并返回错误条的下限和上限的向量。我将使用一个简单的算法,只计算y值的5%以上。

(defn calc-error-bars [x y]
  (let [delta (* y 0.05)]
    [(- y delta) (+ y delta)]))

现在我们只使用map函数对这组数据起作用add-lines ......

(map #(add-lines plot [%1 %1] (calc-error-bars %1 %2)) (range 20) y)

这给了我们这个情节:

Random Data with Error Bars

主要问题是所有的条纹都是不同的颜色。我不确定在没有使用JFreeChart调用的情况下是否有办法解决这个问题。希望有人会看到这个并告诉我如何解决它。无论如何,这非常接近。