php教程 php手册 用PHP打造超酷的数据饼图

用PHP打造超酷的数据饼图

Jun 21, 2016 am 09:00 AM
draw img

源代码:

//+------------------------+

//| pie3dfun.PHP//公用函数 |

//+------------------------+

define("ANGLE_STEP", 5); //定义画椭圆弧时的角度步长

function draw_getdarkcolor($img,$clr) //求$clr对应的暗色

{

$rgb = imagecolorsforindex($img,$clr);

return array($rgb["red"]/2,$rgb["green"]/2,$rgb["blue"]/2);

}

function draw_getexy($a, $b, $d) //求角度$d对应的椭圆上的点坐标

{

$d = deg2rad($d);

return array(round($a*Cos($d)), round($b*Sin($d)));

}

function draw_arc($img,$ox,$oy,$a,$b,$sd,$ed,$clr) //椭圆弧函数

{

$n = ceil(($ed-$sd)/ANGLE_STEP);

$d = $sd;

list($x0,$y0) = draw_getexy($a,$b,$d);

for($i=0; $i

{

$d = ($d+ANGLE_STEP)>$ed?$ed:($d+ANGLE_STEP);

list($x, $y) = draw_getexy($a, $b, $d);

imageline($img, $x0+$ox, $y0+$oy, $x+$ox, $y+$oy, $clr);

$x0 = $x;

$y0 = $y;

}

}

function draw_sector($img, $ox, $oy, $a, $b, $sd, $ed, $clr) //画扇面

{

$n = ceil(($ed-$sd)/ANGLE_STEP);

$d = $sd;

list($x0,$y0) = draw_getexy($a, $b, $d);

imageline($img, $x0+$ox, $y0+$oy, $ox, $oy, $clr);

for($i=0; $i

{

$d = ($d+ANGLE_STEP)>$ed?$ed:($d+ANGLE_STEP);

list($x, $y) = draw_getexy($a, $b, $d);

imageline($img, $x0+$ox, $y0+$oy, $x+$ox, $y+$oy, $clr);

$x0 = $x;

$y0 = $y;

}

imageline($img, $x0+$ox, $y0+$oy, $ox, $oy, $clr);

list($x, $y) = draw_getexy($a/2, $b/2, ($d+$sd)/2);

imagefill($img, $x+$ox, $y+$oy, $clr);

}

function draw_sector3d($img, $ox, $oy, $a, $b, $v, $sd, $ed, $clr) //3d扇面

{

draw_sector($img, $ox, $oy, $a, $b, $sd, $ed, $clr);

if($sd

{

list($R, $G, $B) = draw_getdarkcolor($img, $clr);

$clr=imagecolorallocate($img, $R, $G, $B);

if($ed>180) $ed = 180;

list($sx, $sy) = draw_getexy($a,$b,$sd);

$sx += $ox;

$sy += $oy;

list($ex, $ey) = draw_getexy($a, $b, $ed);

$ex += $ox;

$ey += $oy;

imageline($img, $sx, $sy, $sx, $sy+$v, $clr);

imageline($img, $ex, $ey, $ex, $ey+$v, $clr);

draw_arc($img, $ox, $oy+$v, $a, $b, $sd, $ed, $clr);

list($sx, $sy) = draw_getexy($a, $b, ($sd+$ed)/2);

$sy += $oy+$v/2;

$sx += $ox;

imagefill($img, $sx, $sy, $clr);

}

}

function draw_getindexcolor($img, $clr) //RBG转索引色

{

$R = ($clr>>16) & 0xff;

$G = ($clr>>8)& 0xff;

$B = ($clr) & 0xff;

return imagecolorallocate($img, $R, $G, $B);

}

// 绘图主函数,并输出图片

// $datLst 为数据数组, $datLst 为标签数组, $datLst 为颜色数组

// 以上三个数组的维数应该相等

function draw_img($datLst,$labLst,$clrLst,$a=250,$b=120,$v=20,$font=10)

{

$ox = 5+$a;

$oy = 5+$b;

$fw = imagefontwidth($font);

$fh = imagefontheight($font);

$n = count($datLst);//数据项个数

$w = 10+$a*2;

$h = 10+$b*2+$v+($fh+2)*$n;

$img = imagecreate($w, $h);

//转RGB为索引色

for($i=0; $i

$clrLst[$i] = draw_getindexcolor($img,$clrLst[$i]);

$clrbk = imagecolorallocate($img, 0xff, 0xff, 0xff);

$clrt = imagecolorallocate($img, 0x00, 0x00, 0x00);

//填充背景色

imagefill($img, 0, 0, $clrbk);

//求和

$tot = 0;

for($i=0; $i

$tot += $datLst[$i];

$sd = 0;

$ed = 0; 333

$ly = 10+$b*2+$v;

for($i=0; $i

{

$sd = $ed;

$ed += $datLst[$i]/$tot*360;

//画圆饼

draw_sector3d($img, $ox, $oy, $a, $b, $v, $sd, $ed, $clrLst[$i]); //$sd,$ed,$clrLst[$i]);

//画标签

imagefilledrectangle($img, 5, $ly, 5+$fw, $ly+$fh, $clrLst[$i]);

imagerectangle($img, 5, $ly, 5+$fw, $ly+$fh, $clrt);

//imagestring($img, $font, 5+2*$fw, $ly, $labLst[$i].":".$datLst[$i]."(".(round(10000*($datLst[$i]/$tot))/100)."%)", $clrt);

$str = iconv("GB2312", "UTF-8", $labLst[$i]);

ImageTTFText($img, $font, 0, 5+2*$fw, $ly+13, $clrt, "./simsun.ttf", $str.":".$datLst[$i]."(".(round(10000*($datLst[$i]/$tot))/100)."%)");

$ly += $fh+2;

}

//输出图形

header("Content-type: image/png");

//输出生成的图片

$imgFileName = "../temp/".time().".png";

imagepng($img,$imgFileName);

echo '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

}

$datLst = array(30, 10, 20, 20, 10, 20, 10, 20); //数据

$labLst = array("中国科技大学", "安徽理工大学", "清华大学", "北京大学", "南京大学", "上海大学", "河海大学", "中山大学"); //标签

$clrLst = array(0x99ff00, 0xff6666, 0x0099ff, 0xff99ff, 0xffff99, 0x99ffff, 0xff3333, 0x009999);

//画图

draw_img($datLst,$labLst,$clrLst);

?>



본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

img 파일을 여는 방법 img 파일을 여는 방법 Sep 18, 2023 am 09:40 AM

img 파일을 여는 방법에는 가상 광학 드라이브 소프트웨어 사용, 압축 소프트웨어 사용 및 특수 도구 사용이 포함됩니다. 자세한 소개: 1. 가상 광학 드라이브 소프트웨어를 사용하여 가상 광학 드라이브 소프트웨어를 열고, 다운로드하고, img 파일을 마우스 오른쪽 버튼으로 클릭하고, "다음 프로그램으로 열기" 또는 "관련 프로그램"을 선택하고, 팝업에서 설치된 가상 광학 드라이브 소프트웨어를 선택합니다. -up 대화 상자, 가상 광학 드라이브 소프트웨어는 img 파일을 자동으로 로드하고 가상 광학 드라이브에서 디스크 이미지로 사용합니다. 가상 광학 드라이브에서 디스크 아이콘을 두 번 클릭하면 img 파일을 열고 해당 콘텐츠에 액세스할 수 있습니다. 등.

img 파일을 여는 방법 img 파일을 여는 방법 Jul 06, 2023 pm 04:17 PM

img 파일을 여는 방법: 1. img 파일 경로를 확인합니다. 2. img 파일 오프너를 사용합니다. 3. 열기 방법을 선택합니다. 4. 사진을 봅니다. img 파일은 일반적으로 사진 데이터를 저장하는 데 사용되는 일반적으로 사용되는 이미지 파일 형식입니다.

img의 형식은 무엇입니까? img의 형식은 무엇입니까? Mar 17, 2023 am 10:33 AM

img는 주로 플로피 디스크 이미지 파일을 생성하는 데 사용되는 파일 압축 형식입니다. 전체 플로피 디스크 또는 전체 CD의 내용을 압축하는 데 사용할 수 있으며 확장자가 ".IMG"인 파일은 이 파일 형식을 사용하여 생성됩니다. img 파일에는 "Ehfa_HeaderTag", "Ehfa_File" 및 "Ehfa_Entry"라는 3개의 기본 노드가 포함되어 있습니다.

Python에서 Pygame의 Draw 그리기 방법을 사용하는 방법 Python에서 Pygame의 Draw 그리기 방법을 사용하는 방법 Apr 19, 2023 pm 04:46 PM

Pygame의 Draw Pygame은 직사각형, 다각형, 원, 직선, 호 등과 같은 간단한 그래픽 모양을 그리기 위한 그리기 모듈을 제공합니다. pygame.draw 모듈에서 일반적으로 사용되는 메서드는 다음 표에 나와 있습니다: 이름 설명 pygame.draw.lect() 직사각형을 그립니다 pygame.draw.polygon() 다각형을 그립니다 pygame.draw.circle() 기반으로 원을 그립니다. 중심과 반경에 pygame.draw. ellipse()는 타원을 그립니다. pygame.draw.arc()는 호를 그립니다(타원의 일부를 흔들며) pygame.draw.line()은 선을 그립니다.

U 디스크 PE가 img를 읽을 수 없습니다. U 디스크 PE가 img를 읽을 수 없습니다. Mar 19, 2024 pm 12:07 PM

U 디스크는 자주 사용되는 저장 장치 중 하나입니다. 사용 중에도 몇 가지 사소한 문제가 있습니다. 예를 들어 U 디스크를 어떻게 해결할 수 있습니까? USB 플래시 드라이브를 읽을 수 없습니까? 문제를 쉽게 해결하는 방법을 알려주는 4단계 USB 플래시 드라이브를 컴퓨터에 삽입한 후 시작 메뉴를 클릭하고 제어판을 선택한 후 치워두세요! USB 플래시 드라이브를 읽을 수 없습니까? 문제를 쉽게 해결하는 방법을 알려주는 4단계 제어판에서 장치 관리자를 찾아 두 번 클릭하세요. 보관해라! USB 플래시 드라이브를 읽을 수 없습니까? 문제를 쉽게 해결하는 방법을 알려주는 4단계 장치 관리자의 기본 인터페이스에서 범용 직렬 버스 컨트롤러를 찾아 치워두세요! USB 플래시 드라이브를 읽을 수 없습니까? USB 대용량 저장 장치를 쉽게 찾고, 선택하고, 마우스 오른쪽 버튼을 클릭하고, 제거를 찾아 치워두는 방법을 알려주는 4단계! USB 플래시 드라이브를 읽을 수 없습니까? 문제를 쉽게 해결하는 방법을 알려주는 4단계 토론을 위한 메시지를 남겨주세요!

HTML에서 이미지 태그는 무엇을 의미합니까? HTML에서 이미지 태그는 무엇을 의미합니까? Mar 04, 2021 pm 02:37 PM

HTML에서 이미지 태그는 이미지를 정의하는 데 사용되는 태그, 즉 "<img>" 태그를 의미합니다. img 요소는 이미지를 웹 페이지에 포함할 수 있습니다. "<img>" 태그는 참조된 이미지에 대한 자리 표시자를 만들고 이미지를 HTML 페이지에 연결하는 데 사용됩니다. img 태그는 src 속성을 사용하여 URL을 지정합니다. 이미지를 표시합니다. 구문 "<img src="imageurl">".

jquery에서 img의 src 속성을 변경하는 방법 jquery에서 img의 src 속성을 변경하는 방법 Mar 03, 2022 pm 03:41 PM

jquery에서 img src 속성을 변경하는 방법: 1. attr() 속성을 사용하고 "$("img").attr("src","The address of the image file")" 구문을 사용합니다. prop() 메서드, 구문 " $("img").prop("src","이미지 파일의 주소")".

CSS img 왜곡을 처리하는 방법 CSS img 왜곡을 처리하는 방법 Sep 13, 2021 am 11:34 AM

CSS img 왜곡에 대한 해결 방법: 1. 해당 CSS 파일을 엽니다. 2. 원래 요소 콘텐츠의 길이와 너비를 유지하려면 "object-fit:none;"을 설정합니다.

See all articles