2013-07-11 4 views
3

데이터베이스에 "추천 소스"라는 드롭 다운에 대한 응답이있는 열이 있습니다. 그 쿼리 및 해시를 반환하고 있습니다 :Ruby on Rails 데이터베이스에서 d3.js로 플롯 할 데이터 준비

다음 해시 결과
Clients.count(:all, :group => :referral_source) 

:

{"Internet search (e.g., Google)?"=>26, 
"Personal referral (e.g., friend or family)"=>23, 
"Other"=>11, ""=>51, 
"Listserv (e.g., neighborhood listserv)"=>5, 
"Walk by"=>5} 

을보기에서, 나는 D3와 막대 그래프로 그 결과를 플롯 좋아 싶습니다. js. 이 차트는 d3.js example과 같이 멋지게 보이는데, 내 차트를보고 싶습니다. 내 문제는 예제 CSV 데이터를 사용합니다.

이 예제가 레일에서 곧바로 사용되는 형식으로 데이터를 가져올 수 있습니까? 즉, 내가보기에 자바 스크립트에 전달할 내 데이터 객체의 배열처럼 싶습니다 :

var data = [ {"Name": "Internet search (e.g., Google)?", "Count": 26}, 
      {"Name": "Personal referral (e.g., friend or family)", "Count": 23}, 
      ... ] 

어떻게 그 해시 (또는 쿼리)는 원하는 형식에 들어갈을 수정하는 방법은 무엇입니까?

답변

7

D3-generator.comD3.js으로 시작하는 좋은 참고 자료입니다. 나는 또한 D3 tutorials이 유용하다는 것을 알았지 만, 레이블이있는 수평 막대 차트가 보이지 않았습니다.

새 배열에 내 해시를 다시 매핑하여 내 질문을 해결했습니다. 원래의 쿼리를 사용하여이 작업을 수행 할 수있는 것 같지만 Active Record/SQL을 사용하지 않는 것이 좋습니다. 여기

내가 그런 내가보기에 그에 .to_json했다

@referral_source = Client.count(:all, :group => :referral_source) 
remap = @referral_source.map {|k, v| { Name: k, Count: v} } 

=> {{:Name=>"Internet search (e.g., Google)?", :Count=>26}, ... ] 

루비

에서 D3 발전기와 함께 사용할 수있는 객체의 배열에 해시를 다시 매핑하는 방법입니다. 알아 내야 할 것보다 훨씬 오래 걸렸습니다.

+1

자세한 내용은이 예제 [http://bl.ocks.org/mbostock/3885304]를 가지고 놀고 수평으로 만들거나 대신 데이터를 사용할 수 있는지 알아보십시오. 처음 시작할 때는 꽤 조밀 할 수 있지만 ~ 50 줄의 코드를 관리 할 수 ​​있습니다. –

+0

안녕하세요, 아담, 의견을 보내 주셔서 감사합니다. 좋은 깨끗한 막 대형 차트입니다. 그 링크를 확인해 주시겠습니까? 텍스트가 올바르지 만 클릭하면 존재하지 않는 페이지로 연결됩니다. – JHo

+1

죄송합니다! 이것은 작동해야합니다 : bl.ocks.org/mbostock/3885304 –