타원 그래프소스 관련 질문 드립니다.

타원 그래프소스 관련 질문 드립니다.

QA

타원 그래프소스 관련 질문 드립니다.

본문

1890264991_1709081241.8.jpg

위 이미지 처럼

타원형 그래프 소스를 찾고 있는데, 흔한 그래프 방식이 아니라 그런지 아무리 찾아도 보이질 않네요.

원형은 가끔 보이긴 하는데, 타원으로 바꾸기가 어렵습니다.

 

혹시 저런 형태의 그래프 소스가 있을지 문의드립니다.

아니면 제작의뢰를 해야하는지, 한다면 가능한 형태인지요..

이 질문에 댓글 쓰기 :

답변 2

가능합니다.

예를 들어 다음과 같이 해 볼 수 있을것 같습니다.

참고하셔서 원하시는 형식으로 구현해 보시는건 어떨까 합니다.


<?php
// 데이터
$categories = ['A', 'B', 'C', 'D', 'E'];
$values = [20, 30, 25, 35, 40];
// SVG 크기 설정
$svg_width = 400;
$svg_height = 400;
$cx = $svg_width / 2; // 타원의 중심 x좌표
$cy = $svg_height / 2; // 타원의 중심 y좌표
$radius_x = 100; // 타원의 x축 반지름
$radius_y = 60; // 타원의 y축 반지름
// 총 값의 합 계산
$total = array_sum($values);
// 각 부분의 시작 각도 초기화
$start_angle = 0;
// SVG 코드 생성
echo '<svg width="' . $svg_width . '" height="' . $svg_height . '" xmlns="http://www.w3.org/2000/svg">';
// 각 부분에 대한 타원형 섹션 생성
foreach ($values as $key => $value) {
    // 각도 계산
    $angle = 360 * ($value / $total);
    // 타원형 섹션 생성
    echo '<path fill="' . getColor($key) . '" d="';
    echo 'M' . $cx . ',' . $cy; // 시작점
    echo ' L' . ($cx + $radius_x * cos(deg2rad($start_angle))) . ',' . ($cy + $radius_y * sin(deg2rad($start_angle))); // 첫 번째 점
    echo ' A' . $radius_x . ',' . $radius_y . ' 0 ' . ($angle > 180 ? '1' : '0') . ',1 ' . ($cx + $radius_x * cos(deg2rad($start_angle + $angle))) . ',' . ($cy + $radius_y * sin(deg2rad($start_angle + $angle))); // 타원의 일부
    echo ' Z"'; // 닫힘
    echo '/>';
    // 다음 섹션의 시작 각도 업데이트
    $start_angle += $angle;
}
echo '</svg>';
// 카테고리별 색상 반환 함수
function getColor($index) {
    $colors = ['#ff5733', '#ffd700', '#c0c0c0', '#00ff00', '#0000ff']; // 임의의 색상
    return isset($colors[$index]) ? $colors[$index] : '#000000'; // 색상이 없을 경우 기본값으로 검은색 반환
}
?>
답변을 작성하시기 전에 로그인 해주세요.
전체 123,556 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT