在之前的基础上添加横纵坐标

上一期在这里:https://www.cnblogs.com/AlphaIcarus/p/16123434.html

先分别创建横纵坐标点的模板,将这两个Text放在Graphic Container之下
完成后隐藏它们

将这两个模板设为预制体也可以
修改MyGraph

public class MyGraph : MonoBehaviour
{
......
private RectTransform labelX; //声明一个RectTransform
private RectTransform labelY; //声明一个RectTransform private void Awake()
{ //graphContainer = transform.Find("GraphContainer").GetComponent<RectTransform>();
......
//因为之前把模板放在graphContainer之下,如果是设为了预制体,直接声明然后赋值就行,不需要这两句
labelX = graphContainer.Find("labelX").GetComponent<RectTransform>(); //找到X轴的模板
labelY = graphContainer.Find("labelY").GetComponent<RectTransform>(); //找到Y轴的模板
......
} //private GameObject CreateCircle(Vector2 anchoredPosition){......}
private void ShowGraph(List<int> valueList)
{
......
for (int i = 0; i < valueList.Count; i++)
{
......
//lastPoint = circleGameobject; RectTransform labelx = Instantiate(labelX); //声明一个RectTransform,复制并实例化模板
//将新生成的坐标设为graphContainer子物体,这样锚点位于graphContainer左下角(原点)方便计算位置坐标
labelx.SetParent(graphContainer);
labelx.gameObject.SetActive(true); //显示坐标,因为之前隐藏了模板
labelx.anchoredPosition = new Vector2(xPos, -25); //设置横坐标位置
labelx.GetComponent<Text>().text = i.ToString(); //设置横坐标显示的数据
}
}
//private void DrawLine(Vector2 pointA, Vector2 pointB){......}
//private float RotateAngle(float x, float y){......}
}

显示结果:

这里我又把背景大小调整了一下,方便横坐标显示
接下来是y轴坐标
修改MyGraph

 ......
private void ShowGraph(List<int> valueList)
{
......
for (int i = 0; i < valueList.Count; i++){......} int count = 10; //这里为y坐标个数
for (int i = 0; i <= count; i++)
{
RectTransform labely = Instantiate(labelY); //获取模板
labely.SetParent(graphContainer); //设置父物体
labely.gameObject.SetActive(true); //显示
float yPos = i * 1f / count;
labely.anchoredPosition = new Vector2(-50f, yPos * graphHeight); //y轴坐标
labely.GetComponent<Text>().text = Mathf.RoundToInt(yPos * maxValue).ToString(); //显示的值
}
}

显示效果:

接下来是横纵坐标的线

和坐标点的方法类似,分别创建横纵坐标线就行,这里两个线条都是Image,且锚点都是graphcontainer,即原点位于左下角

然后修改MyGraph

public class MyGraph : MonoBehaviour
{
......
private RectTransform lineH;
private RectTransform lineV;
......
private void Awake()
{
......
lineH = graphContainer.Find("LineHorizontal").GetComponent<RectTransform>();
lineV = graphContainer.Find("LineVertical").GetComponent<RectTransform>();
......
}
private void ShowGraph(List<int> valueList)
{
......
for (int i = 0; i < valueList.Count; i++)
{
......
//在横纵坐标后面添加即可,因为位置和坐标点相同
RectTransform lineVertical = Instantiate(lineV);
lineVertical.SetParent(graphContainer, false);
lineVertical.gameObject.SetActive(true);
lineVertical.anchoredPosition = new Vector2(xPos, 0f);
} int count = 10;
for (int i = 0; i <= count; i++)
{
......
//在横纵坐标后面添加即可,因为位置和坐标点相同
RectTransform lingHorizontal = Instantiate(lineH);
lingHorizontal.SetParent(graphContainer, false);
lingHorizontal.gameObject.SetActive(true);
lingHorizontal.anchoredPosition = new Vector2(-0f, yPos * graphHeight);
}
}
}

显示效果:

线条可以自行修改透明度和颜色或者修改为虚线贴图
下一步为绘制柱状统计图:
https://www.cnblogs.com/AlphaIcarus/p/16128922.html

在UnityUI中绘制线状统计图2.0的更多相关文章

  1. 在UnityUI中绘制线状统计图

    ##先来个效果图 觉得不好看可以自己调整 ##1.绘制数据点 线状图一般由数据点和连线组成 在绘制连线之前,我们先标出数据点 这里我选择用Image图片来绘制数据点 新建Canvas,添加空物体Gra ...

  2. 使用ArcGIS API for Silverlight + Visifire绘制地图统计图

    原文:使用ArcGIS API for Silverlight + Visifire绘制地图统计图 最近把很久之前做的统计图又拿出来重新做了一遍,感觉很多时候不复习,不记录就真的忘了,时间是最好的稀释 ...

  3. MATLAB中绘制质点轨迹动图并保存成GIF

    工作需要在MATLAB中绘制质点轨迹并保存成GIF以便展示. 绘制质点轨迹动图可用comet和comet3命令,使用例子如下: t = 0:.01:2*pi;x = cos(2*t).*(cos(t) ...

  4. CSharpGL(6)在OpenGL中绘制UI元素

    CSharpGL(6)在OpenGL中绘制UI元素 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharpGL源码中包含10多个独立的Demo,更适合入 ...

  5. HTML5在canvas中绘制复杂形状附效果截图

    HTML5在canvas中绘制复杂形状附效果截图 一.绘制复杂形状或路径 在简单的矩形不能满足需求的情况下,绘图环境提供了如下方法来绘制复杂的形状或路径. beginPath() : 开始绘制一个新路 ...

  6. 在 Canvas 中绘制扇形

    在 HTML5 Canvas 中,我们可以通过 arc 方法来绘制圆形: // context.arc(x, y, r, sAngle, eAngle, counterclockwise); var ...

  7. Android中绘制圆角矩形图片及任意形状图片

    圆角矩形图片在苹果的产品中很流行,相比于普通的矩形,很多人都喜欢圆角矩形的图片,因为它避开了直角的生硬,带来更好的用户体验,下面是几个设计的例子: 下面在Android中实现将普通的矩形图片绘制成圆角 ...

  8. MATLAB坐标系中绘制图片

    MATLAB坐标系中绘制图片 方法一 使用图片坐标循环的方式,代码如下. clear,clc,close all tic; map=imbinarize(imread('map.bmp'));%map ...

  9. Java 在PDF文档中绘制图形

    本篇文档将介绍通过Java编程在PDF文档中绘制图形的方法.包括绘制矩形.椭圆形.不规则多边形.线条.弧线.曲线.扇形等等.针对方法中提供的思路,也可以自行变换图形设计思路,如菱形.梯形或者组合图形等 ...

随机推荐

  1. notepad++给每一列数据加单引号及逗号结尾

    原始数据: 对列操作--先加前引号(光标放在第一行哦):编辑-->列块编辑 再加后引号和逗号(文本尾端不齐,就用替换): 打开替换窗口:ctrl+F(其实就是查找) 加完引号和逗号效果:(如果最 ...

  2. WIRESHARK 提取百度云客户端中的下载地址

    序言:近两年感觉云盘是越来越不行了,什么115,360,华为,新浪一些网盘纷纷关门,现在手里能用的就只剩下一个百度云坚挺着.可那速度,简直感人,好吧,没钱冲VIP,就去找了一个破解版,用了一年,爽得飞 ...

  3. FusionCube 9000 虚拟化之数据库场景(虚拟化超融合基础设施)

    1.本场景为fusioncube9000虚拟化场景,带两台dbn节点. 配置清单: 1台cna节点 2台dbn节点,部署数据库操作系统,一般安装oracle数据双机. 2台mcna节点,作为管理节点, ...

  4. synchronized 与 lock锁的异同

    相同点: 二者都可以解决线程安全问题: 不同点: 1..Synchronized 是Java内置的关键字:Lock是一个Java类: 2.Synchronized 无法判断锁的状态:Lock可以判断是 ...

  5. 一道有意思的 CSS 面试题,FizzBu​​zz ~

    FizzBu​​zz 是一道很有意思的题目.我们来看看题目: 如果遇见了 3 的倍数要说 Fizz,5 的倍数就说 Buzz,如果即是 3 的倍数又是 5 的倍数就说 FizzBuzz. 如果是在一些 ...

  6. 半吊子菜鸟学Web开发6 -- Vscode开发环境配置

    1vscode上手一周不到,终于弄出点门路,终于弄清楚了点vscode的设置是什么样子的了....哭 2就我这两天的使用来看,一般vscode默认只让打开一个文件夹,然后在你打开的文件夹里面自动生成 ...

  7. 请说说Struts1和Struts2的区别?

      特性 Struts1 Struts2 Action Struts1.x要求Action类要扩展自一个抽象基类.Struts1.x的一个共有的问题是面向抽象类编程而不是面向接口编程. Struts2 ...

  8. Spring如何处理线程并发问题?

    在一般情况下,只有无状态的Bean才可以在多线程环境下共享,在Spring中,绝大部分Bean都可以声明为singleton作用域,因为Spring对一些Bean中非线程安全状态采用ThreadLoc ...

  9. @Component, @Controller, @Repository, @Service 有何区别?

    @Component :这将 java 类标记为 bean.它是任何 Spring 管理组件的通 用构造型.spring 的组件扫描机制现在可以将其拾取并将其拉入应用程序环境 中. @Controll ...

  10. Google Translate寻找之旅

    须知 网站:https://translate.google.de/ TK对应入口函数:teanslate_m_zh_CN文件/vu函数 TKK对应文件:/index页面,直接搜索TKK值即可 Goo ...