Highcharts로 인구 피라미드 만들기

16774 단어 JavaScripthighcharts
AutoScale Advent Calendar 2018 9일차 책임자matamatak다.
학생 실습으로 저는 트위터 계정의 종합 활용 도구SocialDog 개발에 종사합니다.
JS 차트에서 추천한 하이차트를 써볼게요.

Highcharts란?


공식 사이트
JavaScript용 차트 라이브러리
Free for Non-Commercial이므로 비즈니스 용도에 유의해야 합니다.
Open SourceGithub가 공개됐기 때문에.

인구 피라미드 그래프


세대별 인구와 남녀 비율을 나타내는 도표

일본인구통계-위키백과
나는 내가 한 번 본 적이 있다고 생각한다.이번에는 하이컷으로 이쪽을 그려볼게요.

시위 행진을 찾다


어쨌든 공식적인 프레젠테이션에서 비슷한 그래프가 있는지 찾아볼게요.
Bar with negative stack는 목표와 매우 가깝다.

시위 행진만 보면 소스 코드도 쉬워요. 조금만 고치면 해결돼요!망했다!
첫 번째 이미지처럼 Y축은 연대가 중앙으로 이동하여 공통화시킨다.
그러나 문서만 놓고 보면 공식적으로 대응하지는 않은 것으로 보인다.

뭘 하고 싶은데.


아무리 해도 표현할 수 없는 것은 반복적인 실험의 결과이다.

(코드를 간소화하기 위해 대략적인 부분도 있다)
나는 한 번 보면 문제가 없는 도표라고 생각한다.

데모, 소스 코드


데모(CodePen)


See the Pen BGvrwm by matamatak ( @matamatak ) on CodePen .

소스 코드



HTML

<script src="https://code.highcharts.com/highcharts.js"></script>
<div id="cnt">
  <div id="left"></div>
  <div id="right"></div>
</div>



JS

var categories = [
  '0-4', '5-9', '10-14', '15-19',
  '20-24', '25-29', '30-34', '35-39', '40-44',
  '45-49', '50-54', '55-59', '60-64', '65-69',
  '70-74', '75-79', '80-84', '85-89', '90-94',
  '95-99', '100 + '
];

Highcharts.chart('left', {
  chart: {
    type: 'bar',
    marginRight: 1
  },
  yAxis: {
    min: 0,
    reversed: true,
    title: {
      enabled: false
    }
  },
  xAxis: {
    visible: false,
    reversed: false,
  },
  title: {
    text: ''
  },
  legend: {
    layout: 'vertical',
    align: 'left',
    verticalAlign: 'top',
    x: 30,
    y: 10,
    floating: true,
    backgroundColor: ((Highcharts.theme && Highcharts.theme.legendBackgroundColor) || '#FFFFFF'),
  },
  series: [{
    name: 'man',
    data: [
      2.1, 2.0, 2.1, 2.3, 2.6,
      2.9, 3.2, 3.1, 2.9, 3.4,
      4.3, 4.0, 3.5, 2.9, 2.5,
      2.7, 2.2, 1.1, 0.6, 0.2,
      0.0
    ]
  }]
});

Highcharts.chart('right', {
  chart: {
    type: 'bar'
  },
  yAxis: {
    min: 0,
    enabled: false,
    title: {
      enabled: false
    }
  },
  xAxis: {
    reversed: false,
    categories: categories,
    tickLength: 0
  },
  title: {
    text: ''
  },
  legend: {
    layout: 'vertical',
    align: 'right',
    verticalAlign: 'top',
    x: -20,
    y: 10,
    floating: true,
    backgroundColor: ((Highcharts.theme && Highcharts.theme.legendBackgroundColor) || '#FFFFFF'),
  },
  series: [{
    color: '#ccaadd',
    name: 'woman',
    data: [
      2.1, 2.0, 2.1, 2.3, 2.6,
      2.9, 3.2, 3.1, 2.9, 3.4,
      4.3, 4.0, 3.5, 2.9, 2.5,
      2.7, 2.2, 1.1, 0.6, 0.2,
      0.0
    ]
  },]
});




CSS

#left,
#right {
  width: 49%;
  display: inline-block;
}

#cnt {
  max-width: 800px;
  margin: 0 auto;
}


디테일


두 개의 도표를 준비해서 방법을 강구하다.그중에 하나를 숨겨보도록 하겠습니다.br/>
legend(그림)를 누르면 해당 도표를 표시하거나 숨길 수 있습니다p>


총결산


강행.보수성도 안 좋아서 개인적으로 쓰고 싶지 않아요.br/>
그러나 대다수의 도표는 모두 실현할 수 있으니 반드시 한 번 사용하십시오p>

좋은 웹페이지 즐겨찾기