2016-08-22 1 views
2

날짜/시간을 두 변수 cx (일 년이어야 함)와 cy (시간 + 분/60)에 따라 : CX와 싸이가 NaN이 될 및 D3 오류 catch되지 않은 형식 오류를주고있다 :d3.min.js는 Uncaught TypeError를 제공합니다. n.apply는 함수가 아닙니다.

<!-- date format of d.date: 24-8-2016 9:47:38--> 
      var parseDayinYearFormat = d3.time.format('%j').parse; 
      var parseHourFormat = d3.time.format('%H').parse; 
      var parseMinuteFormat = d3.time.format('%M').parse; 

      <!-- add the objects--> 
      var circles = svg.selectAll("circle") 
       .data(data) 
       .enter() 
       .append("circle"); 
      var circleAttributes = circles 
       .attr("cx", function (d) { return +parseDayinYearFormat(d.date); }) 
       .attr("cy", function (d) { return +parseHourFormat(d.date)+(parseMinuteFormat(d.date)/60); }) 
       .attr("r", function (d) { return 20.0/(9-d.total); }) 
       .attr("class", function (d) {if (d.w>d.total-d.w) {return "cr"} else { return "cb" }}); 

그러나 D3가 좋은이 재생되지 않는 n.apply 것은 도와주세요 기능

없습니다.

+0

압축되지 않은 d3.js 파일을 다운로드하여 코드에 연결하는 것이 좋습니다. 오류가 발생하면 브라우저의 dev 도구에서 소스 코드를 확인하십시오. –

+0

에릭을 시도해 보겠습니다. – Rense

답변

2

전체 문자열을 단일 형식 개체로 구문 분석해야합니다. 일련의 구문 분석으로 문자열을 구문 분석 할 수 없습니다.

d3 version 3.x documentation을 사용하여 다음 예를 생각해 냈습니다.이 예는 귀하의 예에 해당합니다. 귀하의 예를 24-8-2016 9:47:38 더 제로 패딩을 표시하지 많은 분야를 가지고 있기 때문에, 내가 말할 즉, %-d,의 %와 지정자 사이에 대시를 사용하는 것이

var datestring = '24-8-2016 9:47:38'; 
 
var format = d3.time.format('%-d-%-m-%Y %-H:%-M:%-S'); 
 

 
console.log(format.parse(datestring)) 
 
// "2016-08-24T13:47:38.000Z" // (my time zone is UTC-4)
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>

참고 D3가 수 처음에는 0이 아니어야합니다. 오른쪽 명확하게 단지 하루 24있다 :

또한 귀하의 예제에서, 하루-의 년, 366 일 사이 인 방법24가되어 있다는 것을주의?

그러나 문자열에서 요일과 시간과 분을 추출하려는 코드 조각에서 나타납니다. 이 간단한 목적을 위해 d3.time.format은 과도 할 수 있습니다. Date 개체를 제공하므로이 개체를 분석하여 일/시간/분을 추출해야합니다. 이 작업을 위해 정규 표현식 사용을 고려하십시오.

+0

빠른 답변 주셔서 감사합니다. 그러나 나는 수학을하기 위해 별도의 시간과 분이 필요합니다. 참으로 24에 관해서는 달의 일이지만, 1.366의 범위로 변환해야합니다. – Rense

+0

예,'GetHours'와 같은'Date' 메소드를 사용하여 필요한 숫자를 추출 할 수 있습니다 (local-timezone-vs-UTC 버그에 맞지 않는지 테스트하십시오). 또는'd3 .time.format'. http://stackoverflow.com/q/8619879/500207을 보면 Date 객체를 day-of-year (1-366)로 변환하기 위해 d3을 사용하는 것이 매우 쉽습니다.'+ d3.time.format ("% j") (format.parse (datestring))'은'237'으로 평가됩니다. –

관련 문제