社区
基础编程
帖子详情
在画立体柱形图时遇到的问题?
tjyihui
2003-10-20 04:12:56
以前画二维平面柱形图时只要动态设定好柱形图的高度就可以了,但是在画立体柱形图时,因为要涉及到长方体的3个可见面,而变得很复杂,请问该如何画呢?
...全文
116
5
打赏
收藏
在画立体柱形图时遇到的问题?
以前画二维平面柱形图时只要动态设定好柱形图的高度就可以了,但是在画立体柱形图时,因为要涉及到长方体的3个可见面,而变得很复杂,请问该如何画呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
liyujie2000
2003-10-21
打赏
举报
回复
好东西,收藏一下,
tjyihui
2003-10-21
打赏
举报
回复
老大们
你们的代码怎么一点注释都没有呀
xuzuning
2003-10-21
打赏
举报
回复
<?
/**
函数 Bar3d 用于绘制3三维条形图
使用世界坐标系,即原点在左下角。函数中做了WC-DC的转换
*/
function getRGB($color){
$R=($color>>16) & 0xff;
$G=($color>>8) & 0xff;
$B=($color) & 0xff;
return (array($R,$G,$B));
}
function setColor(&$im,$color) {
list($R,$G,$B) = getRGB($color);
return imagecolorallocate($im,$R,$G,$B);
}
function Bar3d(&$image,$x,$y,$w,$h,$z,$color=0xffffff,$angle=45) {
$dw = ceil($z*sin(deg2rad($angle)));
$dh = ceil($z*cos(deg2rad($angle)));
$im = imagecreate($w+abs($dw),$h+abs($dh));
$mx = imagesx($im);
$my = imagesy($im);
list($R,$G,$B) = getRGB($color);
$bg = imagecolorallocate($im,256-$R,256-$G,256-$B);
imagecolortransparent($im,$bg);
$a = array(0,$my, $w,$my, $w+$dw,$my-$dh, $dw,$my-$dh);
for($i=0;$i<8;$i+=2) {
$b[] = $a[$i];
$b[] = $a[$i+1]-$h;
}
if($dw < 0)
for($i=0;$i<8;$i+=2) {
$a[$i] -= $dw;
$b[$i] -= $dw;
}
if($dh < 0)
for($i=1;$i<8;$i+=2) {
$a[$i] += $dh;
$b[$i] += $dh;
}
$k = 0.8;
if($dh > 0)
imagefilledPolygon($im,$b,4,imagecolorallocate($im,$R*$k,$G*$k,$B*$k));
else
imagefilledPolygon($im,$a,4,imagecolorallocate($im,$R*$k,$G*$k,$B*$k));
if($dw > 0)
imagefilledPolygon($im,array($a[2],$a[3],$b[2],$b[3],$b[4],$b[5],$a[4],$a[5]),4,imagecolorallocate($im,$R/2,$G/2,$B/2));
else
imagefilledPolygon($im,array($a[6],$a[7],$b[6],$b[7],$b[0],$b[1],$a[0],$a[1]),4,imagecolorallocate($im,$R/2,$G/2,$B/2));
imagefilledPolygon($im,array($a[0],$a[1],$b[0],$b[1],$b[2],$b[3],$a[2],$a[3]),4,imagecolorallocate($im,$R,$G,$B));
imagecopyresized($image,$im,$x,imagesy($image)-$y-$my,0,0,$mx,$my,$mx,$my);
return $image;
}
/*** 测试例 ***/
$im = imagecreate(200,200);
setColor($im,0xefefef);
$color = array(0xff0000,0x00ff00,0x0000ff,0xffff00);
$data = array(
array(40,30,75,40),
array(20,40,30,10),
array(10,20,30,20)
);
foreach($data as $v) {
$m[] = max($v);
$cell[] = count($v);
}
$m = max($m);
$cell = max($cell);
$x = 10;
$y = 10;
$z = 10;
$kx = floor(floor((imagesx($im)-3*$x)/count($data))/$cell);
$ky = (imagesy($im)-3*$y)/$m;
foreach($data as $v) {
foreach($v as $i=>$d) {
Bar3d($im,$x,$y,$kx,$d*$ky,$z,$color[$i]);
$x += $kx;
}
$x = ceil($x+4);
}
header("Content-type: image/gif");
imagepng($im);
imagedestroy($im);
?>
skystar008
2003-10-20
打赏
举报
回复
这是画平面扇面的函数
function chx_sector($img,$ox,$oy,$a,$b,$sd,$ed,$clr)
{
$n=ceil(($ed-$sd)/ANGLE_STEP);
$d=$sd;
list($x0,$y0)=chx_getexy($a,$b,$d);
imageline($img,$x0+$ox,$y0+$oy,$ox,$oy,$clr);
for($i=0;$i<$n;$i++)
{
$d=($d+ANGLE_STEP)>$ed?$ed:($d+ANGLE_STEP);
list($x,$y)=chx_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)=chx_getexy($a/2,$b/2,($d+$sd)/2);
imagefill($img,$x+$ox,$y+$oy,$clr);
}
skystar008
2003-10-20
打赏
举报
回复
这是一个画3D扇面的函数.
function chx_sector3d($img,$ox,$oy,$a,$b,$v,$sd,$ed,$clr)
{
chx_sector($img,$ox,$oy,$a,$b,$sd,$ed,$clr);
if($sd<180)
{
list($R,$G,$B)=chx_getdarkcolor($img,$clr);
$clr=imagecolorallocate($img,$R,$G,$B);
if($ed>180) $ed=180;
list($sx,$sy)=chx_getexy($a,$b,$sd);
$sx+=$ox;
$sy+=$oy;
list($ex,$ey)=chx_getexy($a,$b,$ed);
$ex+=$ox;
$ey+=$oy;
imageline($img,$sx,$sy,$sx,$sy+$v,$clr);
imageline($img,$ex,$ey,$ex,$ey+$v,$clr);
chx_arc($img,$ox,$oy+$v,$a,$b,$sd,$ed,$clr);
list($sx,$sy)=chx_getexy($a,$b,($sd+$ed)/2);
$sy+=$oy+$v/2;
$sx+=$ox;
imagefill($img,$sx,$sy,$clr);
}
}
PowerBI系列之视觉对象专题
PowerBI系列课程之内置视觉对象和常用自定义视觉对象专题 内置视觉对象Stacked bar chart 堆积条形图Stacked column chart 堆积
柱形图
- X轴按类别显示Clustered bar chart 簇状条形图Clustered column chart 簇状
柱形图
100% Stacked bar chart 百分比堆积条形图100% Stacked column chart 百分比堆积
柱形图
Line Chart 折线图-预测功能Area Chart 面积图Stacked Area Chart 堆积面积图Line and stacked column chart 折线和堆积
柱形图
-双Y轴Line and clustered column chart 折线和簇状
柱形图
Ribbon Chart 丝带图Waterfall Chart 瀑布图Funnel 漏斗图Scatter chart 散点图Pie Chart 饼图 Donut Chart 环形图TreeMap 树状图Map 地图 Filled Map 着色地图Shape Map 形状地图Gauge 仪表Card 卡片图Multi-row card 多行卡片KPI Table 表格-条件样式Matrix 矩阵详解 Key influencers 关键影响者Decomposition tree 分解树Q&A 问答2021.6月增加分页表格视觉对象自定义视觉对象视觉对象使用建议下载排名前20,免费实用的视觉对象 AllDemo pbix介绍 Pareto 帕累托图DrillDown Donut 可钻取饼图Word Cloud 文字云Gantt 甘特图Infographic Designer 信息柱状图Timeline Slicer
时
间轴切片器Chiclet Slicer 图片切片器Text Filter 文本筛选器HierarchySlicer 层级切片器Pulse Chart脉动图Power KPI Matrix KPI矩阵Animated Bar Chart Race 动态条形图Advance Card 高级卡片Sankey Chart 桑基图Radar Chart 雷达图Dial Gauge 码表Waffle 华夫占比图Quadrant 象限图 Tornado Chart 龙卷风图Histogram Chart 直方图 Box and Whisker chart 盒线图Sunburst 阳光图Chord Chart 和弦图Bullet Chart 子弹图HTML Content html解析视觉对象
基础编程
21,886
社区成员
140,364
社区内容
发帖
与我相关
我的任务
基础编程
从PHP安装配置,PHP入门,PHP基础到PHP应用
复制链接
扫一扫
分享
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章