Files
XCharts/Demo/Scripts/Demo_LargeData.cs
2019-05-11 04:33:54 +08:00

68 lines
2.0 KiB
C#

using UnityEngine;
using XCharts;
public class Demo_LargeData : MonoBehaviour
{
public int maxCacheDataNumber = 3000;
public float initDataTime = 5;
private CoordinateChart chart;
private float initTime;
private int initCount;
private System.DateTime timeNow;
void Awake()
{
chart = gameObject.GetComponentInChildren<CoordinateChart>();
timeNow = System.DateTime.Now;
chart.xAxis.ClearData();
chart.series.ClearData();
chart.maxCacheDataNumber = maxCacheDataNumber;
initCount = maxCacheDataNumber;
}
void Update()
{
if (initCount>0)
{
int count = (int)(maxCacheDataNumber / initDataTime * Time.deltaTime);
for(int i = 0; i < count; i++)
{
timeNow = timeNow.AddSeconds(-initCount);
chart.AddXAxisData(timeNow.ToString("hh:mm:ss"));
chart.AddData(0, UnityEngine.Random.Range(60, 150));
initCount--;
if (initCount <= 0) break;
}
chart.RefreshChart();
}
}
void GenerateData(int count, CoordinateChart chart)
{
var baseValue = Random.Range(0, 1000);
var time = new System.DateTime(2011, 1, 1);
var smallBaseValue = 0;
chart.xAxis.ClearData();
for (var i = 0; i < count; i++)
{
chart.AddXAxisData(time.ToString("hh:mm:ss"));
smallBaseValue = i % 30 == 0
? Random.Range(0, 700)
: (smallBaseValue + Random.Range(0, 500) - 250);
baseValue += Random.Range(0, 20) - 10;
float value = Mathf.Max(
0,
Mathf.Round(baseValue + smallBaseValue) + 3000
);
//var index = i % 100;
//var value = (Mathf.Sin(index / 5) * (index / 5 - 10) + index / 6) * 5;
value = Mathf.Abs(value);
chart.AddData(0, value);
time = time.AddSeconds(1);
}
}
}