给你一个画饼图的,画直方图直接用img控制其宽高就可实现吧

饼图|控制

//调用方法:<image src="chart.php">
//chart.php为本文文件名

<?

/*
把角度转换为弧度
*/
function radians ($degrees)
{
return($degrees * (pi()/180.0));
}
/*
** 取得在圆心为(0,0)圆上 x,y点的值
*/
function circle_point($degrees, $diameter)
{
$x = cos(radians($degrees)) * ($diameter/2);
$y = sin(radians($degrees)) * ($diameter/2);

return (array($x, $y));
}
// 填充图表的参数
$ChartDiameter = 200; //图表直径
$ChartFont = 2; //图表字体
$ChartFontHeight = imagefontheight($ChartFont);//图表字体的大小

   require('mysql.php3');
   $sql=new mysql_class;
   $sql->create('star');
   $sql->query("select * from serch where answer='富士通常昊 九段'");
   $record1=$sql->rows;
   $sql->query("select * from serch where answer='富士通曹薰铉 九段'");
   $record2=$sql->rows;          

$ChartData = array( $record1,$record2);//用于生成图表的数据,可通过数据库来取得来确定
//$ChartLabel = array("常昊九段", "曹薰铉九段"); //数据对应的名称

//确定图形的大小
$ChartWidth = $ChartDiameter + 20;
$ChartHeight = $ChartDiameter + 20 +
(($ChartFontHeight + 2) * count($ChartData));

//确定统计的总数
for($index = 0; $index < count($ChartData); $index++)
{
$ChartTotal += $ChartData[$index];
}

$ChartCenterX = $ChartDiameter/2 + 10;
$ChartCenterY = $ChartDiameter/2 + 10;

//生成空白图形
$image = imagecreate($ChartWidth, $ChartHeight);

//分配颜色
$colorBody = imagecolorallocate($image, 0xe4, 0xe6, 0xd1);
$colorBorder = imagecolorallocate($image, 0x00, 0x00, 0x00);
$colorText = imagecolorallocate($image, 0x00, 0x00, 0x00);

$colorSlice[] = imagecolorallocate($image, 0xFF, 0x00, 0x00);
$colorSlice[] = imagecolorallocate($image, 0x00, 0x00, 0xFF);

//填充背境
imagefill($image, 0, 0, $colorBody);

/*
** 画每一个扇形
*/
$Degrees = 0;
for($index = 0; $index < count($ChartData); $index++)
{
$StartDegrees = round($Degrees);
$Degrees += (($ChartData[$index]/$ChartTotal)*360);
$EndDegrees = round($Degrees);

$CurrentColor = $colorSlice[$index%(count($colorSlice))];

//画图F
imagearc($image,$ChartCenterX,$ChartCenterY,$ChartDiameter,
$ChartDiameter,$StartDegrees,$EndDegrees, $CurrentColor);

//画直线
list($ArcX, $ArcY) = circle_point($StartDegrees, $ChartDiameter);
imageline($image,$ChartCenterX,$ChartCenterY,floor($ChartCenterX + $ArcX),
floor($ChartCenterY + $ArcY),$CurrentColor);
//画直线
list($ArcX, $ArcY) = circle_point($EndDegrees, $ChartDiameter);
imageline($image,$ChartCenterX,$ChartCenterY,ceil($ChartCenterX + $ArcX),
ceil($ChartCenterY + $ArcY),$CurrentColor);

//填充扇形
$MidPoint = round((($EndDegrees - $StartDegrees)/2) + $StartDegrees);
list($ArcX, $ArcY) = circle_point($MidPoint, $ChartDiameter/2);
imagefilltoborder($image,floor($ChartCenterX + $ArcX),floor($ChartCenterY + $ArcY),
$CurrentColor,$CurrentColor);
}

//画边框
imagearc($image,
$ChartCenterX,
$ChartCenterY,
$ChartDiameter,
$ChartDiameter,
0,
180,
$colorBorder);

imagearc($image,
$ChartCenterX,
$ChartCenterY,
$ChartDiameter,
$ChartDiameter,
180,
360,
$colorBorder);

imagearc($image,
$ChartCenterX,
$ChartCenterY,
$ChartDiameter+7,
$ChartDiameter+7,
0,
180,
$colorBorder);

imagearc($image,
$ChartCenterX,
$ChartCenterY,
$ChartDiameter+7,
$ChartDiameter+7,
180,
360,
$colorBorder);

imagefilltoborder($image,
floor($ChartCenterX + ($ChartDiameter/2) + 2),
$ChartCenterY,
$colorBorder,
$colorBorder);

//画图例
for($index = 0; $index < count($ChartData); $index++)
{
$CurrentColor = $colorSlice[$index%(count($colorSlice))];
$LineY = $ChartDiameter + 20 + ($index*($ChartFontHeight+2));

//draw color box
imagerectangle($image,
10,
$LineY,
10 + $ChartFontHeight,
$LineY+$ChartFontHeight,
$colorBorder);

imagefilltoborder($image,
12,
$LineY + 2,
$colorBorder,
$CurrentColor);

//画标签
imagestring($image,
$ChartFont,
20 + $ChartFontHeight,
$LineY,
"$ChartData[$index]",
$colorText);
}

//到此脚本 已经生了一幅图像的,现在需要的是把它发到浏览器上,重要的一点是要将标头发给浏览器,让它知道是一个GIF文件。不然的话你只能看到一堆奇怪的乱码

header("Content-type: image/gif");
//输出生成的图片
imagegif($image);
?>

时间: 2024-10-27 04:24:21

给你一个画饼图的,画直方图直接用img控制其宽高就可实现吧的相关文章

用asp.net画饼图(可用于各种投票程序)

//用asp.net画饼图(可用于各种投票程序)//和asp相比asp.net拥有更强大的功能,使用gdi+可以轻易实现以前很多不能办到的图形功能.//首先在c:\中建库mess.mdb,并建表title.//建二个字段,title(char型),point(int型)//非常满意     281//比较满意     297//还凑合         166//不满意         416//我还写了画折线图和条形图的部分,目前正在把它们全部写进一个类中.需要的可以和我联系:mailto:ou

用asp.net画饼图

asp.net|饼图 //用asp.net画饼图(可用于各种投票程序)//和asp相比asp.net拥有更强大的功能,使用gdi+可以轻易实现以前很多不能办到的图形功能.//首先在c:\中建库mess.mdb,并建表title.//建二个字段,title(char型),point(int型)//非常满意 281//比较满意 297//还凑合 166//不满意 416//我还写了画折线图和条形图的部分,目前正在把它们全部写进一个类中.需要的可以和我联系:mailto:ouyang76@263.ne

求关于一个用java代码画出类似水晶按钮的效果的代码

问题描述 求关于一个用java代码画出类似水晶按钮的效果的代码 最近在做个东西,但是客户要美观点,所以来求点资料,用java或者安卓的类似水晶按钮的那个功能的代码 解决方案 http://blog.csdn.net/cometnet/article/details/8464693http://www.blogjava.net/Swing/archive/2009/02/20/255676.html 解决方案二: 用ps画好图像然后加载到程序中.需要准备好正常.悬停.按下.禁用几个不同的图片,切换

open_flash_chart 通过js画饼图问题

问题描述 open_flash_chart 通过js画饼图问题 我最近要做报表 发现open_flash_chart 挺好用,但是画饼图的时候发现饼图周围显示不了信息 js代码: var so = new SWFObject("../actionscript/open-flash-chart.swf", "ofc", "500", "200", "9", "#FFFFFF"); //so

数据处理-大神求助一个highcharts 饼图的 c#处理下载的demo

问题描述 大神求助一个highcharts 饼图的 c#处理下载的demo 大神求助一个highcharts 饼图的 c#处理下载的demo , 数据处理希望能更清晰 最近用highcharts绘制饼图,发现其自带的下载功能是 highcharts请求的官网服务器 希望能够把下载服务移到自己这,在网上也搜索了一下,但发现下载的图片都数据处理有点错位, 原图 官网下载的 但是网上的下载demo 处理数据 label数据 没那么清晰还很重复了 大神求助一个.net的下载方法,demo也可以 解决方案

集合类-java中为什么不直接用Collection接口,而是还要再造一个他们相应的抽象类?

问题描述 java中为什么不直接用Collection接口,而是还要再造一个他们相应的抽象类? 诸如HashMap.ArrayList等具体类,都是直接继承自AbstractMap或AbstractList,为什么要设置这么个抽象类,而不直接用相应的接口? 还有这些抽象类为什么单单空着size和iterator两个方法不去实现? 解决方案 抽象类可以添加公共方法,一些可以写的代码可以先写好,接口没办法写方法. 解决方案二: public interface Collection extends

c++-如何用java或者C++编写一个可以验证网络IP接入段合法性并且控制其流量的简易服务器呢?

问题描述 如何用java或者C++编写一个可以验证网络IP接入段合法性并且控制其流量的简易服务器呢? 本人不是学编程,但是毕业设计里面需要做这个 ,希望各路大神不吝赐教 解决方案 http://wenku.baidu.com/link?url=j_QVex7Ffpzw6nOsgiUK3NIdDmNy0sSKt1WuWluBvu6Y9b1Xd41XMPXeDLa5W9zdVErzoScQCyjj_1T1EygG8cX3GaJsr3zxrtOtWI8ZIvO 解决方案二: 计算单位时间write的数

vs中编写了一个会显示水平和竖直滚动条的程序,但是运行时出现错误的结果,请问这是为啥?

问题描述 vs中编写了一个会显示水平和竖直滚动条的程序,但是运行时出现错误的结果,请问这是为啥? 这是源代码: #include #include"resource.h" LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { static

亚马逊推出了一个平台,用户可以租用,可以使用低配置电脑跑高配置软件,这个平台是什么

问题描述 亚马逊推出了一个平台,用户可以租用,可以使用低配置电脑跑高配置软件,这个平台是什么 前一段 极客头条说了 找不到了 求大家给介绍下 这个平台的名字,怎么租用和基本操作 解决方案 你说的是不是Amazon云啊,你可以在网上搜一下亚马逊云,看看能不能找到你想要的东西 解决方案二: AWS,EC2或者其他Cloud Computing Service 解决方案三: 是不是云计算平台啊,云计算就能实现这种功能 解决方案四: 有没有可以在上面运行大型游戏的 云主机呢? (关键是想要这个 ) 解决