用pChart生成雷达图图片
需求 :由于工作需要,需要在一张背景图上添加这一张雷达图,之后图片可以在微信中长按保存。所以说我必须生成一张带有雷达图的图片
第一反应是用百度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生成雷达图图片的更多相关文章
- echar生成雷达图
function createRadarChart(indicatorData, personData) { var myChart = echarts.init(document.getElemen ...
- 关于echarts生成雷达图的一些参数介绍
export const industryFactorOption = { title: { text: '雷达图', textStyle: { color: 'rgba(221,221,221,1) ...
- C# 使用GDI绘制雷达图
最近项目要用C#实现画一个雷达图,搜了搜网上竟然找不到C#画雷达图的解决方案,那么自己实现一个吧 实现效果如下图: 代码如下: public static class RadarDemo { ; ; ...
- Excel 2010高级应用-雷达图(六)
Excel 2010高级应用-雷达图(六) 基本操作如下: 1.新建空白Excel文档,并命名雷达图 2.单击"插入",并找到雷达图图样 3.单击雷达图图样,在空白文档上生成图框, ...
- 【PowerDesigner】【4】连接数据库并生成ER图
文字版: 1,File→Reverse Engineer→Database...., 2,新窗口database reverse engineering打开后,填写名称(Model name),选择数 ...
- Mesh绘制雷达图(UGUI)
参考资料:http://www.cnblogs.com/jeason1997/p/5130413.html ** 描述:雷达图 刷新 radarDate.SetVerticesDirty(); usi ...
- [2014.01.27]wfRadar 雷达图组件 2.5
全新开发的雷达图组件--wfRadar,使用简单,功能强大,图像处理效果极佳. 组件支持多种图片格式,包括bmp,jpg,gif,wmf,emf,ico,png,pcx,tif,tga,pcx,dcx ...
- MySQL数据表生成ER图
遇到没有说明文档的数据库的时候,一张一张表去分析,需要花费很长时间和精力. 幸好有一些工具,可以帮助我们生成ER图,这样看起来就一目了然: 下面我将自己的一次实践记录于下,供参考: 1.下载并安装工具 ...
- python批量制作雷达图
老板要画雷达图,但是数据好多组怎么办?不能一个一个点excel去画吧,那么可以利用python进行批量制作,得到样式如下: 首先制作一个演示的excel,评分为excel随机数生成: 1 =INT(( ...
随机推荐
- Codeforces 1337D Xenia and Colorful Gems
题意 给你3个数组\(a, b\)和\(c\),最小化\((x-y)^2+(y-z)^2+(z-x)^2\),其中\(x \in a, y \in b, z \in c\). 解题思路 这题其实第一眼 ...
- 【python】迭代器与生成器到底是什么?看完你就知道
迭代器跟生成器,与上篇文章讲的装饰器一样,都是属于我的一个老大难问题. 通常就是遇到的时候就去搜一下,结果在一大坨各种介绍博客中看了看,回头又忘记了. 你是不是也是这样呢? 俗话说:好记性不如烂笔头, ...
- oracle之三rman 完全恢复
rman 完全恢复 8.1 recover 恢复: 1)归档 : 完全恢复和不完全恢复 2)非归档:只能恢复到最后一次备份状态(还原) 8.2 完全恢复: ----先对数据库做一个备份(如果是arch ...
- xss构造--如何使用xss语句
XSS的构造 1.利用[<>]构造html/js 如[<script>alert(/xss/)</script>] 2.伪协议 使用javascript:伪协议来构 ...
- [LeetCode]404. 左叶子之和(递归)、938. 二叉搜索树的范围和(递归)(BST)
题目 404. 左叶子之和 如题 题解 类似树的遍历的递归 注意一定要是叶子结点 代码 class Solution { public int sumOfLeftLeaves(TreeNode roo ...
- [LeetCode]322. 零钱兑换(DP)
题目 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成总金额,返回 -1. 示例 1: 输入: coin ...
- C语言汇总3
16-18 1.常量 整型常量:1: 2: 3: 实型常量(小数):单精度常量[3.14],双精度常量(默认情况下)[10.1f] 字符型常量 ' 5 ',只要在双引号的任意的唯一一个字符就为字符型常 ...
- 关于弹性布局flex
什么时候使用flex布局? 当页面排版涉及左右浮动.垂直居中等时,应使用flex布局来避免传统的盒式布局带来的一些Bug. 如何使用flex布局? 在目标元素的父元素设置csss属性.display: ...
- java事件触发
工作遇到一个问题:用netty实现服务和设备的交互,服务发送了一组指令,需要再等待时间内获取结果,如果结果提前全部返回,就进一步处理,如果等待时间内没有全部返回,就视为失败处理. 这个场景我遇到的困难 ...
- Session、Cookie、Token 【浅谈三者之间的那点事】
Cookie 和 Session HTTP 协议是一种无状态协议,即每次服务端接收到客户端的请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录:Session 和 Cookie 的主要目的 ...