3.0 - bar chart

This commit is contained in:
monitor1394
2022-01-13 21:45:59 +08:00
parent 0282dae582
commit c9addaf02c
22 changed files with 195 additions and 106 deletions

View File

@@ -488,17 +488,46 @@ namespace XCharts
}
}
public static float GetAxisPosition(GridCoord grid, Axis axis, float scaleWidth, double value)
/// <summary>
/// 获得数值value在坐标轴上的坐标位置
/// </summary>
/// <param name="grid"></param>
/// <param name="axis"></param>
/// <param name="scaleWidth"></param>
/// <param name="value"></param>
/// <returns></returns>
public static float GetAxisValuePosition(GridCoord grid, Axis axis, float scaleWidth, double value)
{
return GetAxisPositionInternal(grid, axis, scaleWidth, value, true);
return GetAxisPositionInternal(grid, axis, scaleWidth, value, true, false);
}
/// <summary>
/// 获得数值value在坐标轴上相对起点的距离
/// </summary>
/// <param name="grid"></param>
/// <param name="axis"></param>
/// <param name="scaleWidth"></param>
/// <param name="value"></param>
/// <returns></returns>
public static float GetAxisValueDistance(GridCoord grid, Axis axis, float scaleWidth, double value)
{
return GetAxisPositionInternal(grid, axis, scaleWidth, value, false, false);
}
/// <summary>
/// 获得数值value在坐标轴上对于的长度
/// </summary>
/// <param name="grid"></param>
/// <param name="axis"></param>
/// <param name="scaleWidth"></param>
/// <param name="value"></param>
/// <returns></returns>
public static float GetAxisValueLength(GridCoord grid, Axis axis, float scaleWidth, double value)
{
return GetAxisPositionInternal(grid, axis, scaleWidth, value, false);
return GetAxisPositionInternal(grid, axis, scaleWidth, value, false, true);
}
private static float GetAxisPositionInternal(GridCoord grid, Axis axis, float scaleWidth, double value, bool includeGridXY)
private static float GetAxisPositionInternal(GridCoord grid, Axis axis, float scaleWidth, double value, bool includeGridXY, bool realLength)
{
var isY = axis is YAxis;
var gridHeight = isY ? grid.context.height : grid.context.width;
@@ -521,8 +550,14 @@ namespace XCharts
}
else
{
var yDataHig = (axis.context.minMaxRange == 0) ? 0f :
(float)((value - axis.context.minValue) / axis.context.minMaxRange * gridHeight);
var yDataHig = 0f;
if (axis.context.minMaxRange != 0)
{
if (!realLength || (realLength && axis.context.minValue > 0))
yDataHig = (float)((value - axis.context.minValue) / axis.context.minMaxRange * gridHeight);
else
yDataHig = (float)(value / axis.context.minMaxRange * gridHeight);
}
return includeGridXY
? gridXY + yDataHig
: yDataHig;

View File

@@ -22,10 +22,19 @@ namespace XCharts
tooltip.numericFormatter, null, chart);
}
}
for (int i = tooltip.context.data.param.Count - 1; i >= 0; i--)
{
var param = tooltip.context.data.param[i];
if (TooltipHelper.IsIgnoreItemFormatter(param.itemFormatter))
{
tooltip.context.data.param.RemoveAt(i);
}
}
foreach (var param in tooltip.context.data.param)
{
if (!string.IsNullOrEmpty(param.itemFormatter))
{
param.columns.Clear();
var content = param.itemFormatter;
FormatterHelper.ReplaceSerieLabelContent(ref content,
param.numericFormatter,
@@ -35,9 +44,6 @@ namespace XCharts
param.category,
param.serieData.name,
param.color);
param.columns.Clear();
foreach (var item in content.Split('|'))
{
param.columns.Add(item);
@@ -46,6 +52,11 @@ namespace XCharts
}
}
public static bool IsIgnoreItemFormatter(string itemFormatter)
{
return "-".Equals(itemFormatter);
}
public static void LimitInRect(Tooltip tooltip, Rect chartRect)
{
if (tooltip.view == null)

View File

@@ -76,8 +76,12 @@ namespace XCharts
{
var item = GetItem(i);
var param = data.param[i];
if (param.columns.Count <= 0)
{
item.gameObject.SetActive(false);
continue;
}
item.gameObject.SetActive(true);
for (int j = 0; j < param.columns.Count; j++)
{
var column = GetItemColumn(item, j);
@@ -135,7 +139,7 @@ namespace XCharts
}
else
{
if (!string.IsNullOrEmpty(title.text.text))
if (!string.IsNullOrEmpty(title.GetText()))
maxHig += tooltip.titleHeight;
maxHig += tooltip.itemHeight * tooltip.context.data.param.Count;
maxHig += tooltip.paddingTopBottom * 2;