Power BI 사용자 정의 비주얼 개발 : 누적 막대 그래프 개발 : X, Y 축 및 범례 그리기
X축
d3 기능을 사용하여 X 축을 쉽게 묘사할 수 있습니다.
1. 우선 X축의 묘사 영역용의 삽입물을 정의. Visual 클래스의 속성에 다음 코드를 추가합니다.
private xAxis: d3.Selection<d3.BaseType, any, any, any>;
2. 생성자 내에서 초기화. 루트 SVC에 g 요소를 추가합니다.
constructor(options: VisualConstructorOptions) {
this.svg = d3.select<SVGElement, any>(<any> options.element)
.append('svg');
this.stackBarContainer = this.svg
.append('g');
this.xAxis = this.svg
.append('g');
}
3. X축을 표시할 수 있도록 그래프 영역의 여백을 변경합니다.
let margin = { top: 0, bottom: 30, left: 0, right: 0 }
4. update 함수의 맨 아래에 다음 코드를 추가합니다.
private xAxis: d3.Selection<d3.BaseType, any, any, any>;
constructor(options: VisualConstructorOptions) {
this.svg = d3.select<SVGElement, any>(<any> options.element)
.append('svg');
this.stackBarContainer = this.svg
.append('g');
this.xAxis = this.svg
.append('g');
}
let margin = { top: 0, bottom: 30, left: 0, right: 0 }
let xAxis = g => g
.attr("transform", `translate(0,${height - margin.bottom})`)
.call(d3.axisBottom(x).tickSizeOuter(0))
.call(g => g.selectAll(".domain").remove());
this.xAxis.call(xAxis);
5. 커스텀 비주얼을 확인.
Y축
거의 X축과 같이 구현할 수 있습니다.
1. Y 축의 묘사 영역에 대한 삽입물을 정의합니다. Visual 클래스의 속성에 다음 코드를 추가합니다.
private yAxis: d3.Selection<d3.BaseType, any, any, any>;
2. 생성자 내에서 초기화. 루트 SVC에 g 요소를 추가합니다.
this.yAxis = this.svg
.append('g');
3. Y축을 표시할 수 있도록 그래프 영역의 마진을 변경.
let margin = { top: 0, bottom: 30, left: 40, right: 0 }
4. update 함수의 맨 아래에 다음 코드를 추가합니다.
private yAxis: d3.Selection<d3.BaseType, any, any, any>;
this.yAxis = this.svg
.append('g');
let margin = { top: 0, bottom: 30, left: 40, right: 0 }
let yAxis = g => g
.attr("transform", `translate(${margin.left},0)`)
.call(d3.axisLeft(y).ticks(null, "s"))
.call(g => g.selectAll(".domain").remove());
this.yAxis.call(yAxis);
5. 커스텀 비주얼을 확인.
범례
기본적인 사고 방식은 동일하지만, 범례는 보통 사각형이나 원 등과 문자열을 함께 표시하기 때문에 요소가 늘어납니다.
1. 범례 묘사 영역에 대한 삽입물을 정의. Visual 클래스의 속성에 다음 코드를 추가합니다.
private legend: d3.Selection<d3.BaseType, any, any, any>;
2. 생성자 내에서 초기화. 루트 SVC에 g 요소를 추가합니다.
this.legend = this.svg
.append("g");
3. 범례를 표시할 수 있도록 그래프 영역의 마진을 변경.
let margin = { top: 0, bottom: 30, left: 40, right: 130 }
4. update 함수의 맨 아래에 다음 코드를 추가합니다.
private legend: d3.Selection<d3.BaseType, any, any, any>;
this.legend = this.svg
.append("g");
let margin = { top: 0, bottom: 30, left: 40, right: 130 }
let legend = svg => {
let g = svg
.attr("transform", `translate(${width - margin.right}, 0)`)
.selectAll("g")
.data(legends.reverse())
.join("g")
.attr("transform", (d, i) => `translate(0,${i * 20})`)
g.call(g => g.selectAll("circle").remove());
g.call(g => g.selectAll("text").remove());
g.append("circle")
.attr("cx", 20)
.attr("cy", 10)
.attr("r", 5)
.attr("fill", d => color(d));
g.append("text")
.attr("x", 30)
.attr("y", 9.5)
.attr("dy", "0.35em")
.text(d => d);
}
this.legend.call(legend);
5. 커스텀 비주얼을 확인.
요약
이번에는 메인 그래프 이외의 요소를 묘사했습니다. 잘 보이는 것처럼 보이지만 범례 문자열이 길어지거나 짧아지면 동적으로 대응할 수 없으므로 다음 번에는 제공된 Utility를 사용하여 동적으로 계산해 보겠습니다. 또 서식도 설정해 봅니다.
다음 기사로
목차 페이지로 돌아가기
Reference
이 문제에 관하여(Power BI 사용자 정의 비주얼 개발 : 누적 막대 그래프 개발 : X, Y 축 및 범례 그리기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kenakamu/items/9d08502431187fae5796
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Power BI 사용자 정의 비주얼 개발 : 누적 막대 그래프 개발 : X, Y 축 및 범례 그리기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kenakamu/items/9d08502431187fae5796텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)