2016-06-23 2 views
1

현재 x 축에서 월요일로 시작하는 요일을 표시하고 y 축에 주를 표시하는 차트를 만들려고합니다 (즉, 1 월 15 일, 1 월 22 일 등)NVD3 및 ClojureScript에서 차트에 대한 정적 틱 수 설정

x 축을 항상 7 일 표시하는 데 문제가 있습니다. 예를 들어 내 데이터 에만에 월요일 데이터가있는 경우 상관없이 축에 모든 7 일을 표시하고 싶습니다. 여기

는 내가 지금까지 무엇을 가지고 :

(defn bubble-chart [a] 
    (.addGraph js/nv (fn [] 
        (let [chart   (.. js/nv -models scatterChart) 
          width   500 
          x    (doto (js/d3.time.scale.) (.domain #js [0 6]) (.range #js [0 width])) 
          formatWeekFunc (.. js/d3 -time (format "%b %d")) 
          week   ["Mon" "Tues" "Wed" "Thurs" "Fri" "Sat" "Sun"]] 

         (.. chart -xAxis 
          (scale x) 
          (axisLabel "Day of the week") 
          (ticks 7) 
          ;(tickSize 16 0) 
          (tickValues #js [0 1 2 3 4 5 6]) 
          (tickFormat (fn [d] (nth week d)))) 


         (. chart (yScale (js/d3.time.scale.utc.))) 
         (.. chart -yAxis 
          (axisLabel "Week") 
          (ticks (.. js/d3 -time -monday) 1) 
          (tickFormat (fn [d] (formatWeekFunc (js/Date. d))))) 


        (let [my-data @a] 
         (println (str "my-data " my-data)) 
         (.. js/d3 (select "#testDiv svg") 

          (datum (clj->js my-data)) 
          (call chart))))))) 

나는 내가처럼 x을 사용하고 scale(x)에 x 축 설정하지만 난 내 구문의 모든 ClojureScript에 대한 올바른 경우 확실하지 않다되어야 함을 이해 D3에서 또는 내가 제대로하고 있는지 확인하십시오. 어떤 아이디어?

답변

1

답을 찾아 냈습니다. 당신이 nvd3 "options" 모두 같은 형식이 있는지 확인해야합니다 clojurescript와 nvd3 조작하려면 :

(. chart (forceX #js [0 1 2 3 4 5 6])) 
(.. chart -xAxis 
    (axisLabel "Day of the week") 
    (tickValues (.range js/d3 0 6 1)) 
    (tickFormat (fn [d] (nth week d)))) 

;(. chart (yRange #js [chart.height 0])) 
(. chart (yDomain #js [chart.height 0])) 
(. chart (yScale (js/d3.time.scale.utc.))) 

그들은하자 []에 넣어 수 없습니다.

원래 질문에 대답하려면 - (.chart (forceX #js [yourRange]))을 사용하십시오.

관련 문제