2012-04-25 4 views
4

Я создаю сюжет о вере робота о его расстоянии до ориентира. Ось x - это число измерений, а ось y - расстояние до ориентира, которое должно включать в себя полосы ошибок, указывающие на уверенность в этой оценке.Идиоматический способ добавить бары ошибок в сюжет в Incanter

Я не смог найти хороший способ добавить бары ошибок к сюжету, основанному на значении для дисперсии. В настоящее время я создаю квадратный график при каждом измерении, генерируя выборочные данные о среднем значении с моим значением для дисперсии. Это явно не идеально, потому что он является неэффективным с точки зрения вычислений и является неточным представлением информации, которую я пытаюсь отобразить.

Любые идеи о том, как это сделать? В идеале это было бы на xy-plot, и это можно было бы сделать без необходимости прибегать к командам JFreeChart.

ответ

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

Теперь мы должны определить функцию, которая принимает точку (х, у) и возвращает вектор нижней и верхней границами панель ошибок. Я использую упрощенную версию, которая вычисляет только 5% выше и ниже значения y.

(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. Надеюсь, кто-то это увидит и скажет, как это исправить. Во всяком случае, это довольно близко.

+0

Ya было бы идеально, если бы цвета могли быть изменены без вызовов JFreeChart, но это довольно хорошо – troyastorino