日期时间显示
在WMG_Axis_Graph脚本添加属性 public bool Is_X_AXiesUseYear { get; set; } 第一篇已经有介绍了,用来控制是否启用年月
然后添加方法
/// <summary>
/// 时间转换
/// </summary>
/// <param name="Time"></param>
public void Time_long(WMG_List<Vector2> Time, WMG_Series series)
{
for (int i = 0; i < Time.Count; i++)
{
//Y轴最大值
if(yAxis.AxisMaxValue< Time[i].y)
{
float t = Time[i].y % (yAxis.AxisNumTicks-1);
int p= (int)Time[i].y / (yAxis.AxisNumTicks-1);
if (t>0)
{
yAxis.AxisMaxValue= p* yAxis.AxisNumTicks;
}
else
yAxis.AxisMaxValue = p * (yAxis.AxisNumTicks-1);
}
//DateTimeStringToLongDateTime()
}
WMG_List<Vector2> Gettimes = rettime( Time);
int Ticknum = xAxis.AxisNumTicks;
xAxis.LabelType = WMG_Axis.labelTypes.ticks;
//if (Gettimes.Count < Ticknum)
//{
// Ticknum= SetXaisLable(Gettimes.Count);
//}
///X轴的最大值最小值
if (xAxis.AxisMaxValue <= Gettimes[Gettimes.Count - 1].x)
xAxis.AxisMaxValue = Gettimes[Gettimes.Count - 1].x;
if(lineSeries.Count>1)
{
if (xAxis.AxisMinValue >= Gettimes[0].x)
xAxis.AxisMinValue = Gettimes[0].x;
}
else
{
xAxis.AxisMinValue = Gettimes[0].x;
}
xAxis.axisLabels.Clear();
float c = (xAxis.AxisMaxValue - xAxis.AxisMinValue) / (Ticknum-1);
for(int i=0;i< Ticknum;i++)
{
xAxis.axisLabels.Add(WMG_Graph_Tooltip.LongDateTimeToDateTimeString((xAxis.AxisMinValue +( i* c))/10000));
}
yAxis.SetLabelsUsingMaxMin = true;
xAxis.SetLabelsUsingMaxMin = false;
series.pointValues = Time;
}
private int SetXaisLable(int Gettimescount)
{
if (xAxis.LabelType==WMG_Axis.labelTypes.ticks)
{
xAxis.AxisNumTicks = Gettimescount;
}
else if (xAxis.LabelType == WMG_Axis.labelTypes.ticks_center)
{
xAxis.AxisNumTicks = -Gettimescount;
}
return xAxis.AxisNumTicks;
}
/// <summary>
///从大到小排列
/// </summary>
/// <typeparam name="T1"></typeparam>
/// <param name="time"></param>
/// <returns></returns>
private static WMG_List<Vector2> rettime(WMG_List<Vector2> Time)
{
QuickSort(ref Time, 0, Time.Count-1);
return Time;
}
static void QuickSort(ref WMG_List<Vector2> nums, int left, int right)
{
if (left < right)
{
int i = left;
int j = right;
float middle = nums[(left + right) / 2].x;
while (true)
{
while (i < right && nums[i].x < middle) { i++; };
while (j > 0 && nums[j].x > middle) { j--; };
if (i == j) break;
Vector2 temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
if (nums[i] == nums[j]) j--;
}
QuickSort(ref nums, left, i);
QuickSort(ref nums, i + 1, right);
}
}
测试
public WMG_Axis_Graph _Graph;
// Use this for initialization
void Start () {
WMG_Series wMG_= _Graph.addSeries();
wMG_.seriesName = "小青";
wMG_.pointColor = new Color(0, 1, 0);
wMG_.lineColor = new Color(1, 0, 1);
WMG_List<Vector2> _Axis = new WMG_List<Vector2>();
_Axis.Add(GetVector("2017-8-20", 30));
_Axis.Add(GetVector("2017-9-20", 10));
_Axis.Add(GetVector("2017-8-9", 20));
_Axis.Add(GetVector("2017-10-20", 40));
_Axis.Add(GetVector("2017-11-20", 40));
_Graph.Time_long(_Axis, wMG_);
}
private Vector2 GetVector(string time,float YAxiscount)
{
double timess;
if(WMG_Graph_Tooltip.DateTimeStringToLongDateTime(time,out timess))
{
return new Vector2((float)timess*10000, YAxiscount);
}
return default(Vector2);
}