需求 :由于工作需要,需要在一张背景图上添加这一张雷达图,之后图片可以在微信中长按保存。所以说我必须生成一张带有雷达图的图片
第一反应是用百度echars雷达图做动态显示,之后截图。考虑到工作量和效率,放弃。
改为pchart 直接生成雷达图图片 然后用imagick拓展贴到背景图上面。由于imagick攻略比较详细,这里不做赘述,而pchart中文文档则比较匮乏,所以简略介绍下。

第一步 在pchart官网下载类库 http://www.pchart.net/download  建议在本地环境调试,因为你需要大量的操作去调试点线的颜色外形。

下一个zip的包就可以了 一般的解压工具就可以解压缩 重点关注三个文件夹 class example fonts

1 . class目录为生成雷达图类库 包含数据处理类 画图类等 因为需求对颜色样式要求很高 所以大概做了一些了解。如果只是简单要一张雷达图可不做了解。
pData.class.php=>处理数据 转化为点线图形 色值需要设置(必须)
pDraw.class.php=>画图类(必须)
pImage.class.php=>图片处理类(必须)
pRadar.class.php=>雷达图类(必须)
其他为非必须引入 当然如果嫌麻烦可以不用管他们是干什么用的 全扔项目里就好
2. fonts目录为字体资源目录
3. example 示例目录

工具包内有index文件,在php环境下打开文件夹,会自动生成图形界面这还是比较人性化的一个设计。

如果只是要一个二维坐标轴 name直接用sandbox直接调试想要的图形就好了 这是一个调试工具。二维的图基本都可以出来


回来说我们的 雷达图 在目录下找到一个跟需求类似的雷达图

然后根据名称找到对应去 example目录下找到对应的文件 复制一份到上层目录下新建一个自己的目录 myexample下 根据直接本地访问调试就好了 大部分需要用到的注释在脚本中注释了
效果:基本每个部分都可调试

<?php
/**
* Created by PhpStorm.
* User: zhangxd
* Date: 2018/2/9
* Time: 15:20
*/
include ("../class/pData.class.php");
include ("../class/pDraw.class.php");
include ("../class/pImage.class.php");
include ("../class/pRadar.class.php");
$one_data = array(1,5,10,20,30);
drow_love_radar($one_data);
function drow_love_radar($one_data, $file_name='radar.png', $type='auto'){
/* 设置颜色 */
$MyData = new pData();
$MyData->addPoints($one_data, "score");
//设置字体描述
//$MyData->setSerieDescription("ScoreB", "Coverage B");
//设置数据线颜色(此处为红绿蓝三元素调色 alpha为透明度)
$data = array("R"=>30,"G"=>220,"B"=>245,"Alpha"=>100);
$MyData->setPalette('score',$data);

/* 设立数据名称 此处设置为空 不做显示名称 但是占位*/
$MyData->addPoints(array("", "", "", "", ""), "score_name");
$MyData->setAbscissa("score_name"); /* 创建画布设置大小 */
$myPicture = new pImage(800, 800, $MyData);
//$myPicture = new pImage(212, 213, $MyData); /* 画一个背景蒙版 */
$Settings = array("R" => 255, "G" => 151, "B" => 178,"Alpha" => 100);
//$myPicture->drawFilledRectangle(0, 0, 700, 230, $Settings);
//根据起点和重点设置背景图大小
$myPicture->drawFilledRectangle(100, 100, 600, 600, $Settings); /* 设置默认的字体属性 */
$myPicture->setFontProperties(array("FontName" => "../fonts/Forgotte.ttf", "FontSize" => 10, "R" => 80, "G" => 80, "B" => 80)); /*在数据区域 添加填充颜色(为图添加阴影)*/
// $myPicture->setShadow(TRUE, array("X" => 1, "Y" => 1, "R" => 250, "G" => 255, "B" => 250, "Alpha" => 50));
//$myPicture->setShadow(TRUE, array("X" => 1, "Y" => 1, "R" => 49, "G" => 221, "B" => 243, "Alpha" => 100)); /* Create the pRadar object */
$SplitChart = new pRadar(); //根据起点和重点设置雷达图大小
$myPicture->setGraphArea(200, 200, 500, 500);
$Options = array( //坐标轴颜色
'AxisR'=>255,
'AxisG'=>0,
'AxisB'=>0,
'AxisAlpha'=>100, "AxisRotation" => -17, //图形旋转角度
"DrawPoly" => TRUE, //区域阴影 需要调用setShadow方法设置阴影颜色
// "PolyAlpha" => 100, //区域阴影 透明度
'DrawAxisValues' => false, //画坐标轴的值 奇丑
'WriteValues'=>false, //在坐标轴顶点标注数值
'WriteValuesInBubble'=>true, //在顶点气泡中标注
'ValuePadding'=>1, //在顶点气泡中标注 大小
'OuterBubbleRadius'=>0, //顶点气泡颜色 //设置渐变颜色 从里圈到外圈
"BackgroundGradient" => array("StartR" => 255, "StartG" => 151, "StartB" => 178, "StartAlpha" => 100, "EndR" => 255, "EndG" => 255, "EndB" => 255, "EndAlpha" => 100), 'Layout'=>690011,//690011=>尖角雷达图 690012=>圆角雷达图 'SegmentHeight'=> 5,//设置每个坐标格大小
'Segments'=> 3, //设置雷达图显示几个坐标格
'LabelMiddle'=>true, //标签的一些东西 死丑死丑的 反正我没用
'LabelsBackground'=>true,
'LabelsBGR'=>255,
'LabelsBGG'=>255,
'LabelsBGB'=>255,
'LabelsBGAlpha'=>100,
"LabelPos" => RADAR_LABELS_HORIZONTAL,
'LabelPadding'=>10,//标签距离 'DrawPoints'=>TRUE,//画坐标顶点的小圆点
'PointRadius'=>5,//坐标顶点的小圆点大小
'PointSurrounding'=>500,
'DrawLines'=>true,//画坐标点连接线(首尾点不连接 适用于xy坐标轴)
'LineLoopStart'=>true,//链接首尾的点 "FontName" => "../fonts/pf_arma_five.ttf",//字体文件
"FontSize" => 6,//字体大小 /*下面的调试无结果*/
//设置外 气泡颜色
'OuterBubbleR'=>1,
'OuterBubbleG'=>1,
'OuterBubbleB'=>1,
'OuterBubbleAlpha'=>100, //设置内 气泡颜色
'InnerBubbleR'=>1,
'InnerBubbleG'=>1,
'InnerBubbleB'=>1,
'InnerBubbleAlpha'=>100, //设置背景色
'DrawBackground'=>true,
'BackgroundR'=>255,
'BackgroundG'=>255,
'BackgroundB'=>255,
'BackgroundAlpha'=>100, ); $SplitChart->drawRadar($myPicture, $MyData, $Options); switch ($type){
case 'auto':
//根据输出环境操作 在命令模式下保存
$myPicture->autoOutput($file_name);
break;
case 'out':
$myPicture->stroke();
break;
case 'save':
$myPicture->Render($file_name);
break; }
}

友情提示:最好熟悉一下dg库 要不调试起来会很痛苦。

用pChart生成雷达图图片的更多相关文章

  1. echar生成雷达图

    function createRadarChart(indicatorData, personData) { var myChart = echarts.init(document.getElemen ...

  2. 关于echarts生成雷达图的一些参数介绍

    export const industryFactorOption = { title: { text: '雷达图', textStyle: { color: 'rgba(221,221,221,1) ...

  3. C# 使用GDI绘制雷达图

    最近项目要用C#实现画一个雷达图,搜了搜网上竟然找不到C#画雷达图的解决方案,那么自己实现一个吧 实现效果如下图: 代码如下: public static class RadarDemo { ; ; ...

  4. Excel 2010高级应用-雷达图(六)

    Excel 2010高级应用-雷达图(六) 基本操作如下: 1.新建空白Excel文档,并命名雷达图 2.单击"插入",并找到雷达图图样 3.单击雷达图图样,在空白文档上生成图框, ...

  5. 【PowerDesigner】【4】连接数据库并生成ER图

    文字版: 1,File→Reverse Engineer→Database...., 2,新窗口database reverse engineering打开后,填写名称(Model name),选择数 ...

  6. Mesh绘制雷达图(UGUI)

    参考资料:http://www.cnblogs.com/jeason1997/p/5130413.html ** 描述:雷达图 刷新 radarDate.SetVerticesDirty(); usi ...

  7. [2014.01.27]wfRadar 雷达图组件 2.5

    全新开发的雷达图组件--wfRadar,使用简单,功能强大,图像处理效果极佳. 组件支持多种图片格式,包括bmp,jpg,gif,wmf,emf,ico,png,pcx,tif,tga,pcx,dcx ...

  8. MySQL数据表生成ER图

    遇到没有说明文档的数据库的时候,一张一张表去分析,需要花费很长时间和精力. 幸好有一些工具,可以帮助我们生成ER图,这样看起来就一目了然: 下面我将自己的一次实践记录于下,供参考: 1.下载并安装工具 ...

  9. python批量制作雷达图

    老板要画雷达图,但是数据好多组怎么办?不能一个一个点excel去画吧,那么可以利用python进行批量制作,得到样式如下: 首先制作一个演示的excel,评分为excel随机数生成: 1 =INT(( ...

随机推荐

  1. django学习(三)

    1.单表操作和测试环境的准备 我们先对单表查询做一个总结和回顾,并进行进一步的学习和交流.我们在我们的应用的models.py文件下面书写user类.如下所示,然后用数据库迁移,在mysql数据库中生 ...

  2. 数据库的表的字段名称与实体类(pojo)不对应解决方案

    数据库的表的字段名称与实体类(pojo)不对应解决方案 数据库表 ![image-20200429130200825](C:%5CUsers%5C%E6%9E%97%E6%AD%A3%E6%98%8E ...

  3. 蒲公英 &#183; JELLY技术周刊 Vol.21 -- 技术周刊 &#183; React Hooks vs Vue 3 + Composition API

    蒲公英 · JELLY技术周刊 Vol.21 选 React 还是 Vue,每个人心中都会有自己的答案,有很多理由去 pick 心水的框架,但是当我们扪心自问,我们真的可以公正的来评价这两者之间的差异 ...

  4. 使用dbUnit的 IDataSet 因乱序造成assert失败而采取的措施

    本例源码下载:https://files.cnblogs.com/files/xiandedanteng/dbUnitTest20200211.zip 在做IDataSet比较时,特殊情况下会有期盼的 ...

  5. Promise核心实现

    核心 构造函数核心 维护状态变量,只能由pending变为resolve或者reject 维护一个存储结果的变量 维护一个回调数组,执行到then,如果我们传入的立即执行函数没有立即执行resolve ...

  6. python中绝对值的表达式

    abs(x) print(abs(23)) #23print(abs(-45)) #45  

  7. oracle之二归档日志

    归档日志 archivelog 5.1 归档和非归档的区别     1)归档会在日志切换时,备份历史日志,用于OLTP,可以进行冷备份和热备份,可以实现数据库完全恢复.不完全恢复(基于时间点)     ...

  8. python中函数的参数:必传参数(位置参数)、默认值参数、参数组传参、关键字传参

    1.必传参数也叫做位置参数,因为必填,也必须对应位置 2.默认值参数如上图的word 3.参数组参数:传进去的是0个.或多个value的形式,,,和位置参数有点像,只传value值,但是没有限制个数 ...

  9. JVM垃圾回收器前瞻

    垃圾回收器的新发展   GC仍然处于飞速发展之中,目前的默认选项G1 GC在不断的进行改进,很多我们原来认为的缺点,例如串行的Full GC.Card Table扫描的低效等,都已经被大幅改进,例如, ...

  10. 国产化之路-麒麟V10操作系统安装.net core 3.1 sdk

    随着芯片国产化,操作系统国产化,软件国产化的声浪越来越高,公司也已经把开发项目国产化提上了日程,最近搞来了台长城的国产化电脑主机,用来搞试验,安装的是麒麟V10的操作系统,国产化折腾之路就此开始,用的 ...