链接:https://download.csdn.net/download/piger91/10582432?spm=1001.2014.3001.5501
1.GraphMaker只针对unity的UGUI开发,NGUI要用GraphMaker_NGUI, 可接入第三方插件。

2.生成图表对象要通过GraphMaker内部封装的函数生成,并且要在Start()函数里生成,生成、赋值、设父节点后要立刻调用 Init() 函数初始化,如: myGraph.Init();   。

3.给图表上的点或者条、面片之类的添加自己的触发函数,要调用委托函数:
WMG_Click(WMG_Series aSeries,WMG_Node aNode),例如:

public class GraphPointInteraction : MonoBehaviour {
     public WMG_Axis_Graph myGraph;
     void MyCustomFunction(WMG_Series series, WMG_Node node) {
           Debug.Log("Node: " + node.name + " on series: " + series.name + " was clicked!");
     }
     void Start() {
         myGraph.WMG_Click += MyCustomFunction;
     }
}

4.在自定义的代码上动态改变图表的属性变量或者属性列表时,要在改变之后立刻调用 Refresh()函数将这些改变应用到对应的图表中。

5.图表在运行中执行对应的变动时出现抖动或者有组件图片跟不上这种情况时(不是FPS卡的问题),把下面的代码加到WMG_Axis_Graph.cs类中。
   void OnRectTransformDimensionsChange () {
         if (!hasInit) return;
         updateFromResize();
         Refresh();
     }

6.GraphMaker不适合有太多数据的图表的展示,一两百个点还可以处理,多了就会导致FPS卡顿。

7.尽量使用代码而不是编辑器来管理和改动图表预制体或者图表的图片元素,否则会出现各种变量报空的bug。

8.圆饼图1)WMG_Pie_Graph.interactivityEnabled 是否开启交互,true则开启,通过WMG_Pie_Graph.WMG_Pie_Slice_Click (点击饼块) 、  WMG_Pie_Graph.WMG_Pie_Slice_MouseEnter  (鼠标悬停在饼块)、 WMG_Pie_Graph.WMG_Pie_Legend_Entry_Click  (鼠标点击标签样例) 三个委托来添加对应的触发事件,如:
 void  SliceClickEvent( WMG_Pie_Graph  pieGraph , WMG_Pie_Graph_Slice  aSlice )  、
   void  SliceMousEnterEvent( WMG_Pie_Graph  pieGraph , WMG_Pie_Graph_Slice  aSlice , bool  hover )  、 void SliceLegendEntryClickEvent(WMG_Pie_Graph pieGraph, WMG_Legend_Entry legendEntry)

2)WMG_Pie_Graph.useDoughnut 是否开启饼圈形,true则可以抠去中心,圆饼图成环形。

3)WMG_Pie_Graph.doughnutPercentage   开启饼圈形时抠去中心的圆的半径百分比,0.0f等于没抠,1.0f就完全抠完了。

4) Vector  WMG_Pie_Graph.getPositionFromExplode(WMG_Pie_Graph_Slice  aSlice, float aDistance)  获取交互时,饼块往外迸发的目标位置的函数,aSlice是要控制的饼块,aDistance是往外迸发的距离。

5) void  WMG_Anim.animPosition(GameObject  objOfSlice, float speed, DG.Tweening.Ease   easeMode, Vector3  positionFromExplode)  交互时饼块的DoTween动作,objOfSlice是饼块的gameobject,speed是动作的速度,easeMode 是动作的缓冲模式,positionFromExplode是动作的目标位置。

6)WMG_Pie_Graph.sliceValues.SetList( WMG_List<float>  myValue)  设置每个饼块具体值的列表的内置函数,sliceValues不能直接改,否则相关的变量的count没跟着改,会报超下标的bug,WMG_List<T>  是框架重新封装一遍的 List<T> 。
    WMG_Pie_Graph.sliceLabels.SetList( WMG_List<string> myLabels)  设置每个饼块的标签名的内置函数。
    WMG_Pie_Graph.sliceColors.SetList( WMG_List<Color> myColor) 设置每个饼块的颜色的内置函数。
    WMG_Pie_Graph.bgCircleOffset  背景圆底突出圆饼图的距离,距离越大,圆饼图底下的背景圆底突出越多,直接赋float值。
     WMG_Pie_Graph.sortBy   饼块的排序,顺时针排列,直接赋 WMG_Pie_Graph.sortMethod 枚举值。
     WMG_Pie_Graph.explodeLength  饼块之间的间隔距离,直接赋float值。
     WMG_Pie_Graph.explodeSymmetrical  饼块迸发是否对称,什么卵,大概就是是否保持圆饼图的半径,饼块之间间隔距离越远,整个分离的圆饼图的半径应该是越大的,如果要保持圆饼原来的半径,那得裁掉超出原来半径的部分,直接赋true则保持。
   WMG_Pie_Graph.sliceLabelExplodeLength  每个饼块上的百分比标签到圆饼边缘的距离,大于0.0f在圆饼外,小于0.0f在圆饼内,直接赋float值。
   WMG_Pie_Graph.sliceLabelFontSize 每个饼块上的百分比标签的大小,直接赋int值。
   WMG_Pie_Graph.numberDecimalsInPercents  每个饼块上百分比标签的小数点后的位数,直接赋int值。

建个空场景,里面要有camera、canvas、eventsystem,将下面test代码拉到canvas上。

这是test代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MyPieGraph : MonoBehaviour {

public  WMG_Pie_Graph pieGraphPrefab;

// Use this for initialization
    void Start () {
        GameObject pieGraphObj = Instantiate<WMG_Pie_Graph>(pieGraphPrefab).gameObject;
        pieGraphObj.transform.SetParent(GameObject.Find("Canvas").transform,worldPositionStays:false);
        pieGraphObj.GetComponent<RectTransform>().sizeDelta = pieGraphObj.transform.parent.GetComponent<RectTransform>().rect.size; //全屏
        WMG_Pie_Graph pieGraph = pieGraphObj.GetComponent<WMG_Pie_Graph>();
        
        pieGraph.Init();

//Debug.Log(pieGraph.gameObject.name);
        WMG_List<float> pieValues = new WMG_List<float>() { 60f, 80f, 75f, 90f, 100f, 85f, 95f };
        WMG_List<string> pieLabels = new WMG_List<string>() { "小明", "小红", "小花", "小刚", "小青", "小白", "小龙" };
        WMG_List<Color> pieColor = new WMG_List<Color>() { Color.red, Color.yellow, Color.green, Color.blue, Color.cyan, Color.black };
        //pieGraph.resizeEnabled = true;

///pieGraph.sliceValues = pieValues;  Debug.Log("草泥马有几个:" + pieGraph.sliceValues.Count);
        pieGraph.sliceLabels = pieLabels;  //不能直接改变量,要用内置函数去改
        pieGraph.sliceColors = pieColor;
        pieGraph.sliceValues.SetList(pieValues);
        pieGraph.sliceLabels.SetList(pieLabels);
        pieGraph.sliceColors.SetList(pieColor);

pieGraph.sliceLabelExplodeLength = 10f;
        pieGraph.autoCenter = false;
        //pieGraph.autoCenterMinPadding = 10f;
        //pieGraph.bgCircleOffset = 80f;
        pieGraph.sortBy = WMG_Pie_Graph.sortMethod.None;
        //pieGraph.explodeLength = 30f;
        //pieGraph.explodeSymmetrical = false;
        pieGraph.sliceLabelFontSize = 30;
        pieGraph.numberDecimalsInPercents = 5;

pieGraph.interactivityEnabled = true;
        //pieGraph.WMG_Pie_Slice_Click += SliceClickEvent;
        pieGraph.WMG_Pie_Legend_Entry_Click += SliceLegendEntryClickEvent;

//pieGraph.Refresh();
    }

void SliceClickEvent(WMG_Pie_Graph pieGraph, WMG_Pie_Graph_Slice aSlice)
    {
        Debug.Log("草泥马踩到我了");
    }
    void SliceLegendEntryClickEvent(WMG_Pie_Graph pieGraph,WMG_Legend_Entry legendEntry )
    {
        Debug.Log("草泥马别蹭我");
    }

// Update is called once per frame
    //void Update () {
        
    //}
}

(后面的折线图、条形图、、、还在整理)

9.轴图
1)WMG_Axis_Graph.graphTypes  轴图的类型,轴图分为折线轴图和条形轴图,直接赋WMG_Axis_Graph.graphTypes  枚举值,赋完值要记得WMG_Axis_Graph.Refresh()一下,否则会出现一个乱图。

2)WMG_Axis_Graph.orientationType  就是x轴是横着V还是竖着H,直接赋WMG_Axis_Graph.orientationTypes 枚举值。

3)WMG_Axis_Graph.axesTypes  轴的类型(左下、十字、右上、、、),直接赋WMG_Axis_Graph.axesTypes 枚举值。

4)WMG_Axis_Graph.resizeEnabled 是否开启动态重设轴图大小,直接赋布尔值。

5)WMG_Axis_Graph.resizeProperties 要开启动态重设的属性,直接赋WMG_Axis_Graph.ResizeProperties 枚举值。

6)WMG_Axis_Graph.useGroups 是否使用groups数据,设false的话,更改groups也不会显示, 直接赋布尔值。

7)WMG_Axis_Graph.groups  轴图的组集合,控制着每个系列(每条线)里面的点的个数和名字,不能直接赋值,否则相关变量没改,会报下标多或不足的bug,只能同过WMG_Axis_Graph.groups.SetList( WMG_List<string>  myGroups)内置函数去改。

8)WMG_Axis_Graph.lineSeries 轴图的系列集合,就是轴图有几条线,直接赋 List<GameObject>  集合,除非你能按它里面的规范自己做预制体,否则里面的GameObject是框架里的series预制体,可以通过series预制体获取绑在它身上的WMG_Series脚本,并设置系列的相关属性,如:seriesName(轴图下面的系列图标显示的名字),pointValue(每个点的二维坐标集合,WMG_List<vector2>类型,x坐标只能是顺序整数),pointColor或pointColors(每个点的颜色)等等。

9)WMG_Axis_Graph.paddingLeftRight 轴图中轴的左右衬垫,二维值,在左下角o点的轴图中,x是左边衬垫(即y轴与整图边缘的距离),y是右边衬垫(即x轴箭头与整图边缘的距离)。

10)WMG_Axis_Graph.paddingTopBottom 轴图中轴的上下衬垫,与左右衬垫类同。

11)WMG_Axis_Graph.theOrigin  轴图的原点,要自己设置的时候,得先把WMG_Axis_Graph.autoUpdateOrigin设为false,否则框架会动态锁定(0,0)为原点,直接赋vector2值。

12)WMG_Axis_Graph.barWidth 当轴图类型为条形图时,给每个长条分配的宽度,要自己设置的时候,得先把WMG_Axis_Graph.autoUpdateBarWidth设为false,否则框架会根据数据多少来动态更新适合的宽度(x轴长度/长条数),直接赋float值。

13)WMG_Axis_Graph.barAxisValue 当轴图为bar_side条形图时有效,每个长条的底部所在的高度(长条竖着的时候是y值,横着的时候是x值),不管长条底部在哪个高度,长条顶部的高度都会跟WMG_Series.pointValue集合里设置的高度一样,所以要改动长条底部的高度,同时也要改动长条顶部的高度,这样才能将轴图的长条整体上下平移,要自己设置的时候,得先把WMG_Axis_Graph.autoUpdateBarAxisValue设为false,否则框架会锁定0高度为长条底部高度,直接赋float值。

14)WMG_Axis_Graph.autoUpdateBarWidthSpacing 当轴图为条形图时,空隔的实际宽度占分配的宽度的百分比,空的越多,长条越细,直接赋0到1的float值。

15)WMG_Axis_Graph.autoUpdateOrigin
       WMG_Axis_Graph.autoUpdateBarWidth
       WMG_Axis_Graph.autoUpdateBarAxisValue (用法如上11)、12)、13))

16)WMG_Axis_Graph.autoFitLabels 是否自动适应系列标签的高度作为衬垫,如果设true,框架会自动适应WMG_Axis_Graph.paddingLeftRight 的x值和WMG_Axis_Graph.paddingTopBottom的y值,而WMG_Axis_Graph.autoFitPadding 自动适应的衬垫值也是x轴标签与系列标签顶部的距离而 不是 x轴标签与整图边缘的距离,不会出现系列标签和轴重叠的情况,直接赋布尔值。

17)WMG_Axis_Graph.yAxis.AxisMinValue 和WMG_Axis_Graph.yAxis.AxisMaxValue 轴图y轴的最大值和最小值,直接赋float值。

18)WMG_Axis_Graph.yAxis.AxisNumTicks    轴图y轴的分割点个数,如设为4时,0到100,只有0,25,75,100四个分割点,直接赋int值。

19)WMG_Axis_Graph.yAxis.MinAutoGrow 和WMG_Axis_Graph.yAxis.MaxAutoGrow 轴图y轴的最小值比最小数据大时自动增加不足部分,轴图y轴最大值比最大数据小时自动增加不足部分。

20)WMG_Axis_Graph.yAxis.MinAutoShrink和 WMG_Axis_Graph.yAxis.MaxAutoShrink 轴图y轴最小值比最小数据小时自动缩减多余部分,轴图y轴最大值比最大数据大时自动缩减多余部分。

21)WMG_Axis_Graph.yAxis.AxisLinePadding 轴图y轴超出最大值的距离,好像是按像素算,直接赋float值。

22)WMG_Axis_Graph.yAxis.HideAxisArrowTopRight 是否隐藏轴的上、右箭头,直接赋布尔值。

23)WMG_Axis_Graph.yAxis.hideGrid  是否隐藏y轴的网格线,直接赋布尔值。

24)WMG_Axis_Graph.yAxis.hideTicks 是否隐藏y轴的分割点(hideTick好像是旧版本的,没卵用),直接赋布尔值。

25)WMG_Axis_Graph.yAxis.AxisTitleString 轴图y轴的标头,标明y轴的值是什么类型什么单位的,直接赋string值。

26)WMG_Axis_Graph.yAxis.AxisTitleOffset 轴图y轴的标头位置偏移,(0,0)点是y轴中点,(10,10)是y轴的左上角,直接赋vector2值。

27)WMG_Axis_Graph.yAxis.AxisTitleFontSize 轴图y轴的标头的字体大小,直接赋int值。

28)



写个屁,都差不多,看了那么久,后面的还不会自己看,那还玩个mmp。

把下面脚本预制体拖到Canvas下一条条代码测试,还是一样,场景要有camera、canvas、eventsystem。

测试的代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class myLineGraph : MonoBehaviour {

public WMG_Axis_Graph lineGraphPrefab;

WMG_Axis_Graph lineGraph;

// Use this for initialization
    void Start () {
        GameObject lineGraphObj = Instantiate<WMG_Axis_Graph>(lineGraphPrefab).gameObject;
        lineGraphObj.transform.SetParent(GameObject.Find("Canvas").transform, worldPositionStays: false);
        lineGraphObj.transform.localPosition = Vector3.zero;
        lineGraphObj.GetComponent<RectTransform>().sizeDelta = lineGraphObj.transform.parent.GetComponent<RectTransform>().rect.size; //全屏
        lineGraph = lineGraphObj.GetComponent<WMG_Axis_Graph>();
        lineGraph.Init();

WMG_List<Vector2> pointPos = new WMG_List<Vector2>() { new Vector2(1f, 3f),new Vector2(2f,20f),new Vector2(3f,4f),
            new Vector2(4f,13f),new Vector2(5f,1f),new Vector2(6f,4f),new Vector2(7f,16f) };
        WMG_List<string> lineGroups = new WMG_List<string>() { "小明", "小红", "小花", "小刚", "小青", "小白", "小龙" };
        WMG_List<Color> lineColor = new WMG_List<Color>() { Color.red, Color.yellow, Color.green, Color.blue, Color.cyan, Color.black };

//lineGraph.useGroups = true;
        lineGraph.groups.SetList(lineGroups);
        lineGraph.xAxis.axisLabels.SetList(lineGroups);
        //lineGraph.lineSeries = new List<GameObject>();
        lineGraph.lineSeries[0].GetComponent<WMG_Series>().pointValues = pointPos;
        lineGraph.lineSeries[0].GetComponent<WMG_Series>().seriesName = "草泥马";
        lineGraph.lineSeries[1].GetComponent<WMG_Series>().seriesName = "叼石牛";
        //lineGraph.theOrigin = new Vector2();

//lineGraph.graphType = WMG_Axis_Graph.graphTypes.bar_stacked;
        //lineGraph.orientationType = WMG_Axis_Graph.orientationTypes.horizontal;
        //lineGraph.axesType = WMG_Axis_Graph.axesTypes.III;
        //lineGraph.resizeEnabled = true;
        //lineGraph.resizeProperties = WMG_Axis_Graph.ResizeProperties.AxesLabelOffset;
        //lineGraph.useGroups = true;
        //lineGraph.graphType = WMG_Axis_Graph.graphTypes.bar_side;
        //lineGraph.autoUpdateBarWidth = false;
        //lineGraph.autoUpdateBarAxisValue = false;
        //lineGraph.barWidth = 1f;
        //lineGraph.barAxisValue = 15f;
        //lineGraph.autoUpdateBarWidthSpacing = 0.1f;
        //lineGraph.resizeProperties = WMG_Axis_Graph.ResizeProperties.AutofitPadding;
        //lineGraph.resizeProperties = WMG_Axis_Graph.ResizeProperties.AxesLinePadding;
        lineGraph.paddingLeftRight = new Vector2(70f, 50f);
        lineGraph.paddingTopBottom = new Vector2(50f, 70f);
        //lineGraph.autoFitLabels = true;
        //lineGraph.autoFitPadding = 1f;
        //lineGraph.yAxis.AxisMinValue = 2f;
        //lineGraph.yAxis.AxisMaxValue = 13f;
        //lineGraph.yAxis.AxisNumTicks = 10;
        //lineGraph.yAxis.MinAutoGrow = true;
        //lineGraph.yAxis.MaxAutoGrow = true;
        //lineGraph.yAxis.MinAutoShrink = true;
        //lineGraph.yAxis.MaxAutoShrink = true;
        //lineGraph.yAxis.AxisLinePadding = 100f;
        //lineGraph.yAxis.HideAxisArrowTopRight = true;
        //lineGraph.yAxis.hideGrid = true;
        //lineGraph.yAxis.hideTick = true;  //没卵用
        //lineGraph.yAxis.hideTicks = true;
        lineGraph.yAxis.AxisTitleString = "海拔";
        lineGraph.yAxis.AxisTitleOffset = new Vector2(30f, 30f);
        lineGraph.yAxis.AxisTitleFontSize = 30;

lineGraph.Refresh();
    }
    
    // Update is called once per frame
    //void Update () {

//   }
}

GraphMaker1.5.7笔记(unity图表插件)相关推荐

  1. Unity数据可视化图表插件XCharts( 一款基于UGUI的数据可视化图表插件)

    一.前言 今天,我在GitHub上看到一个屌炸天的Unity插件:XCharts,,XCharts插件是一款基于Unity3D的UGUI系统的插件,可以绘制折线图.曲线图.饼状图.雷达图.散点图.热力 ...

  2. Unity数据可视化图表插件XCharts3.0发布

    Unity数据可视化图表插件XCharts3.0发布 历时8个多月,业余时间,断断续续,XCharts3.0 总算发布了.如果要打个满意度,我给 3.0 版本来个80分. 对于代码框架结构设计的调整改 ...

  3. Unity接入ChartAndGraph图表插件

    Unity中接入ChartAndGraph图表插件 说明 一.实现柱状图 二.实现折线图 遇到的问题 说明   最近项目上需要实现部分图表数据显示,因为需要用到一些3D图表,所以选择了ChartAnd ...

  4. Unity Cinemachine插件学习笔记,实现单目标和多目标之间切换

    Unity Cinemachine插件学习笔记,实现单目标和多目标之间切换 *版本要求Unity2017.1及以上. 参考资料: [官方] Unity 2017.1正式版发布 Cinemachine插 ...

  5. Unity Cinemachine插件学习笔记

    以下都是转载内容,能够比较直观的学习一些基础内容.现在的Cinemachine更新了许多新的功能,但是Cinemachine插件都ExamplesScences,去看一下官方例子和文档来学习更佳 *版 ...

  6. Unity Cinemachine插件学习笔记,结合Timeline实现简单场景动画

    Unity Cinemachine插件学习笔记,结合Timeline实现简单场景动画 *版本要求Unity2017.1及以上. 参考资料: [官方] Unity 2017.1正式版发布 [Unity] ...

  7. 【部分原创】jquery图表插件flot笔记

    Flot是纯Javascript实现的基于jQuery的图表插件,主要支持线状图和柱状图的绘制(通过插件也可以支持饼状图). 它的特点是使用简单.图形美观,支持鼠标跟踪及缩放功能. Flot是基于ca ...

  8. MMD的unity导入插件

    2019独角兽企业重金招聘Python工程师标准>>> 存在一个mmd模型的unity导入插件: 导入了mmd的物理,将模型每个部位通过 custom的joint进行连接,设定物理属 ...

  9. JQuery图表插件之Flot

    Flot是一个Jquery下图表插件,具有简单使用,交互效果,具有吸引力外观特点.目前支持 Internet Explorer 6+, Chrome, Firefox 2+, Safari 3+ an ...

最新文章

  1. python使用列表推导式(list comprehension)和itertools生成浮点数列表
  2. 10 个 Python 工程师,9 个不合格!!
  3. 安卓代码还是xml绘制页面_我们应该绘制实际还是预测,预测还是实际还是无关紧要?
  4. python文本字符串比对_python-模糊字符串比较
  5. Java File类boolean delete()方法(带示例)
  6. Config文件的使用:通过程序修改Config文件
  7. 数据库操作系统——Visual FoxPro 6.0安装步骤
  8. 未来IT技术展现——虚拟化技术大盘点
  9. 深度神经网络与卷积神经网络的区别
  10. 浏览器打开后自动打开某个页面
  11. vsftp日志文件汉字_为何手机存储空间还没用就快满了?删掉这些隐藏冗余文件满血复活...
  12. 南邮计算机就业,这两所大学实力强劲,从专业到就业率分析,来看看谁更强吧...
  13. 字幕制作之时间轴制作(1) - 字幕的无中生有
  14. Part Ⅵ Transportation 交通??
  15. bi产品有哪些,商业智能产品
  16. 面试题数组L型输出思路
  17. 来了小老弟,送40本技术畅销书!
  18. HTML如何自动播放网易音乐,教大家网易云音乐打开自动播放功能的流程
  19. 【Unity】游戏对象池ObjectPool
  20. Visual Studio 2019 及更低版本中 Microsoft C++ 编译器对 C++ ISO 标准支持情况

热门文章

  1. 【PPT】新零售企业数字化转型实践
  2. MySQL索引之主键索引
  3. hackbar 使用教程_HackMan:打造Chrome下的HackBar !
  4. android 转wkt格式,Arcgis for Android 空间数据WKT与JSON描述
  5. C语言——输出一个整数的每一位
  6. 人类和 AI 能够“双向奔赴”吗? | 近匠
  7. C#导入excel文件,捕捉到的异常为“外部表不是预期的格式。”
  8. 中国人泛基因组发了 Nature,基因组重测序的CNS值得拥有
  9. 内螺旋矩阵和双螺旋矩阵(python)
  10. ThinkPHP6模板引擎