mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-24 09:50:15 +00:00
增加CandlestickChartK线图 #124
This commit is contained in:
@@ -60,6 +60,10 @@ namespace XCharts
|
||||
/// 水位图。
|
||||
/// </summary>
|
||||
Liquid,
|
||||
/// <summary>
|
||||
/// K线图。K线图的data至少包含四个数据:[open, close, lowest, highest]
|
||||
/// </summary>
|
||||
Candlestick,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -1241,6 +1245,23 @@ namespace XCharts
|
||||
return serieData;
|
||||
}
|
||||
|
||||
public SerieData AddData(float open, float close, float lowest, float heighest, string dataName = null)
|
||||
{
|
||||
CheckMaxCache();
|
||||
var serieData = SerieDataPool.Get();
|
||||
serieData.data.Add(open);
|
||||
serieData.data.Add(close);
|
||||
serieData.data.Add(lowest);
|
||||
serieData.data.Add(heighest);
|
||||
serieData.name = dataName;
|
||||
serieData.index = m_Data.Count;
|
||||
m_Data.Add(serieData);
|
||||
m_ShowDataDimension = 4;
|
||||
SetVerticesDirty();
|
||||
CheckDataName(dataName);
|
||||
return serieData;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 将一组数据添加到系列中。
|
||||
/// 如果数据只有一个,默认添加到维度Y中。
|
||||
@@ -1277,6 +1298,7 @@ namespace XCharts
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void CheckMaxCache()
|
||||
{
|
||||
if (m_MaxCache <= 0) return;
|
||||
|
||||
@@ -307,6 +307,36 @@ namespace XCharts
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加[open, close, lowest, highest]数据
|
||||
/// </summary>
|
||||
/// <param name="index"></param>
|
||||
/// <param name="open"></param>
|
||||
/// <param name="close"></param>
|
||||
/// <param name="lowest"></param>
|
||||
/// <param name="heighest"></param>
|
||||
/// <param name="dataName"></param>
|
||||
/// <returns></returns>
|
||||
public SerieData AddData(int index, float open, float close, float lowest, float heighest, string dataName = null)
|
||||
{
|
||||
var serie = GetSerie(index);
|
||||
if (serie != null)
|
||||
{
|
||||
return serie.AddData(open, close, lowest, heighest, dataName);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public SerieData AddData(string serieName, float open, float close, float lowest, float heighest, string dataName = null)
|
||||
{
|
||||
var serie = GetSerie(serieName);
|
||||
if (serie != null)
|
||||
{
|
||||
return serie.AddData(open, close, lowest, heighest, dataName);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加一组数据到指定的系列中
|
||||
/// </summary>
|
||||
|
||||
@@ -37,6 +37,7 @@ namespace XCharts
|
||||
}
|
||||
[SerializeField] private bool m_Show = false;
|
||||
[SerializeField] private Color32 m_Color;
|
||||
[SerializeField] private Color32 m_Color0;
|
||||
[SerializeField] private Color32 m_ToColor;
|
||||
[SerializeField] private Color32 m_ToColor2;
|
||||
[SerializeField] private Color32 m_BackgroundColor;
|
||||
@@ -46,6 +47,7 @@ namespace XCharts
|
||||
[SerializeField] private Type m_BorderType = Type.Solid;
|
||||
[SerializeField] private float m_BorderWidth = 0;
|
||||
[SerializeField] private Color32 m_BorderColor;
|
||||
[SerializeField] private Color32 m_BorderColor0;
|
||||
[SerializeField] [Range(0, 1)] private float m_Opacity = 1;
|
||||
[SerializeField] private string m_TooltipFormatter;
|
||||
[SerializeField] private string m_NumericFormatter = "";
|
||||
@@ -55,6 +57,7 @@ namespace XCharts
|
||||
{
|
||||
m_Show = false;
|
||||
m_Color = Color.clear;
|
||||
m_Color0 = Color.clear;
|
||||
m_ToColor = Color.clear;
|
||||
m_ToColor2 = Color.clear;
|
||||
m_BackgroundColor = Color.clear;
|
||||
@@ -64,6 +67,7 @@ namespace XCharts
|
||||
m_BorderType = Type.Solid;
|
||||
m_BorderWidth = 0;
|
||||
m_BorderColor = Color.clear;
|
||||
m_BorderColor0 = Color.clear;
|
||||
m_Opacity = 1;
|
||||
m_TooltipFormatter = null;
|
||||
m_NumericFormatter = "";
|
||||
@@ -95,6 +99,14 @@ namespace XCharts
|
||||
set { if (PropertyUtil.SetColor(ref m_Color, value)) SetVerticesDirty(); }
|
||||
}
|
||||
/// <summary>
|
||||
/// 数据项颜色。
|
||||
/// </summary>
|
||||
public Color32 color0
|
||||
{
|
||||
get { return m_Color0; }
|
||||
set { if (PropertyUtil.SetColor(ref m_Color0, value)) SetVerticesDirty(); }
|
||||
}
|
||||
/// <summary>
|
||||
/// Gradient color1.
|
||||
/// 渐变色的颜色1。
|
||||
/// </summary>
|
||||
@@ -161,6 +173,14 @@ namespace XCharts
|
||||
set { if (PropertyUtil.SetColor(ref m_BorderColor, value)) SetVerticesDirty(); }
|
||||
}
|
||||
/// <summary>
|
||||
/// 边框的颜色。
|
||||
/// </summary>
|
||||
public Color32 borderColor0
|
||||
{
|
||||
get { return m_BorderColor0; }
|
||||
set { if (PropertyUtil.SetColor(ref m_BorderColor0, value)) SetVerticesDirty(); }
|
||||
}
|
||||
/// <summary>
|
||||
/// 边框宽。
|
||||
/// </summary>
|
||||
public float borderWidth
|
||||
@@ -225,6 +245,41 @@ namespace XCharts
|
||||
color.a = (byte)(color.a * m_Opacity);
|
||||
return color;
|
||||
}
|
||||
public Color32 GetColor0()
|
||||
{
|
||||
if (m_Opacity == 1 || m_Color0.a == 0) return m_Color0;
|
||||
var color = m_Color0;
|
||||
color.a = (byte)(color.a * m_Opacity);
|
||||
return color;
|
||||
}
|
||||
public Color32 GetColor(Color32 defaultColor)
|
||||
{
|
||||
var color = ChartHelper.IsClearColor(m_Color) ? defaultColor : m_Color;
|
||||
if (m_Opacity == 1 || color.a == 0) return color;
|
||||
color.a = (byte)(color.a * m_Opacity);
|
||||
return color;
|
||||
}
|
||||
public Color32 GetColor0(Color32 defaultColor)
|
||||
{
|
||||
var color = ChartHelper.IsClearColor(m_Color0) ? defaultColor : m_Color0;
|
||||
if (m_Opacity == 1 || color.a == 0) return color;
|
||||
color.a = (byte)(color.a * m_Opacity);
|
||||
return color;
|
||||
}
|
||||
public Color32 GetBorderColor(Color32 defaultColor)
|
||||
{
|
||||
var color = ChartHelper.IsClearColor(m_BorderColor) ? defaultColor : m_BorderColor;
|
||||
if (m_Opacity == 1 || color.a == 0) return color;
|
||||
color.a = (byte)(color.a * m_Opacity);
|
||||
return color;
|
||||
}
|
||||
public Color32 GetBorderColor0(Color32 defaultColor)
|
||||
{
|
||||
var color = ChartHelper.IsClearColor(m_BorderColor0) ? defaultColor : m_BorderColor0;
|
||||
if (m_Opacity == 1 || color.a == 0) return color;
|
||||
color.a = (byte)(color.a * m_Opacity);
|
||||
return color;
|
||||
}
|
||||
|
||||
public bool IsNeedGradient()
|
||||
{
|
||||
|
||||
@@ -121,12 +121,36 @@ namespace XCharts
|
||||
/// the maxinum value.
|
||||
/// 最大值。
|
||||
/// </summary>
|
||||
public float max { get { return m_Data.Max(); } }
|
||||
public float max
|
||||
{
|
||||
get
|
||||
{
|
||||
if (m_Data.Count == 0) return 0;
|
||||
float temp = float.MinValue;
|
||||
for (int i = 0; i < m_Data.Count; i++)
|
||||
{
|
||||
if (m_Data[i] > temp) temp = m_Data[i];
|
||||
}
|
||||
return temp;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// the mininum value.
|
||||
/// 最小值。
|
||||
/// </summary>
|
||||
public float min { get { return m_Data.Min(); } }
|
||||
public float min
|
||||
{
|
||||
get
|
||||
{
|
||||
if (m_Data.Count == 0) return 0;
|
||||
float temp = float.MaxValue;
|
||||
for (int i = 0; i < m_Data.Count; i++)
|
||||
{
|
||||
if (m_Data[i] < temp) temp = m_Data[i];
|
||||
}
|
||||
return temp;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 饼图数据项的开始角度(运行时自动计算)
|
||||
/// </summary>
|
||||
|
||||
@@ -20,6 +20,11 @@ namespace XCharts
|
||||
[SerializeField] protected float m_ScatterSymbolSelectedSize;
|
||||
[SerializeField] protected float m_PieTooltipExtraRadius;
|
||||
[SerializeField] protected float m_PieSelectedOffset;
|
||||
[SerializeField] protected Color32 m_CandlestickColor = new Color32(194, 53, 49, 255);
|
||||
[SerializeField] protected Color32 m_CandlestickColor0 = new Color32(49, 70, 86, 255);
|
||||
[SerializeField] protected float m_CandlestickBorderWidth = 1;
|
||||
[SerializeField] protected Color32 m_CandlestickBorderColor = new Color32(194, 53, 49, 255);
|
||||
[SerializeField] protected Color32 m_CandlestickBorderColor0 = new Color32(49, 70, 86, 255);
|
||||
|
||||
/// <summary>
|
||||
/// the color of text.
|
||||
@@ -67,6 +72,47 @@ namespace XCharts
|
||||
get { return m_PieSelectedOffset; }
|
||||
set { if (PropertyUtil.SetStruct(ref m_PieSelectedOffset, value < 0 ? 0f : value)) SetVerticesDirty(); }
|
||||
}
|
||||
/// <summary>
|
||||
/// K线图阳线(涨)填充色
|
||||
/// </summary>
|
||||
public Color32 candlestickColor
|
||||
{
|
||||
get { return m_CandlestickColor; }
|
||||
set { if (PropertyUtil.SetColor(ref m_CandlestickColor, value)) SetVerticesDirty(); }
|
||||
}
|
||||
/// <summary>
|
||||
/// K线图阴线(跌)填充色
|
||||
/// </summary>
|
||||
public Color32 candlestickColor0
|
||||
{
|
||||
get { return m_CandlestickColor0; }
|
||||
set { if (PropertyUtil.SetColor(ref m_CandlestickColor0, value)) SetVerticesDirty(); }
|
||||
}
|
||||
/// <summary>
|
||||
/// K线图阳线(跌)边框色
|
||||
/// </summary>
|
||||
public Color32 candlestickBorderColor
|
||||
{
|
||||
get { return m_CandlestickBorderColor; }
|
||||
set { if (PropertyUtil.SetColor(ref m_CandlestickBorderColor, value)) SetVerticesDirty(); }
|
||||
}
|
||||
/// <summary>
|
||||
/// K线图阴线(跌)边框色
|
||||
/// </summary>
|
||||
public Color32 candlestickBorderColor0
|
||||
{
|
||||
get { return m_CandlestickBorderColor0; }
|
||||
set { if (PropertyUtil.SetColor(ref m_CandlestickBorderColor0, value)) SetVerticesDirty(); }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// K线图边框宽度
|
||||
/// </summary>
|
||||
public float candlestickBorderWidth
|
||||
{
|
||||
get { return m_CandlestickBorderWidth; }
|
||||
set { if (PropertyUtil.SetStruct(ref m_CandlestickBorderWidth, value < 0 ? 0f : value)) SetVerticesDirty(); }
|
||||
}
|
||||
|
||||
public void Copy(SerieTheme theme)
|
||||
{
|
||||
@@ -77,6 +123,11 @@ namespace XCharts
|
||||
m_ScatterSymbolSelectedSize = theme.scatterSymbolSelectedSize;
|
||||
m_PieTooltipExtraRadius = theme.pieTooltipExtraRadius;
|
||||
m_PieSelectedOffset = theme.pieSelectedOffset;
|
||||
m_CandlestickColor = theme.candlestickColor;
|
||||
m_CandlestickColor0 = theme.candlestickColor0;
|
||||
m_CandlestickBorderColor = theme.candlestickBorderColor;
|
||||
m_CandlestickBorderColor0 = theme.candlestickBorderColor0;
|
||||
m_CandlestickBorderWidth = theme.candlestickBorderWidth;
|
||||
}
|
||||
|
||||
public SerieTheme(Theme theme)
|
||||
@@ -88,6 +139,28 @@ namespace XCharts
|
||||
m_ScatterSymbolSelectedSize = XChartsSettings.serieScatterSymbolSelectedSize;
|
||||
m_PieTooltipExtraRadius = XChartsSettings.pieTooltipExtraRadius;
|
||||
m_PieSelectedOffset = XChartsSettings.pieSelectedOffset;
|
||||
m_CandlestickBorderWidth = XChartsSettings.serieCandlestickBorderWidth;
|
||||
switch (theme)
|
||||
{
|
||||
case Theme.Default:
|
||||
m_CandlestickColor = ColorUtil.GetColor("#c23531");
|
||||
m_CandlestickColor0 = ColorUtil.GetColor("#314656");
|
||||
m_CandlestickBorderColor = ColorUtil.GetColor("#c23531");
|
||||
m_CandlestickBorderColor0 = ColorUtil.GetColor("#314656");
|
||||
break;
|
||||
case Theme.Light:
|
||||
m_CandlestickColor = ColorUtil.GetColor("#c23531");
|
||||
m_CandlestickColor0 = ColorUtil.GetColor("#314656");
|
||||
m_CandlestickBorderColor = ColorUtil.GetColor("#c23531");
|
||||
m_CandlestickBorderColor0 = ColorUtil.GetColor("#314656");
|
||||
break;
|
||||
case Theme.Dark:
|
||||
m_CandlestickColor = ColorUtil.GetColor("#c23531");
|
||||
m_CandlestickColor0 = ColorUtil.GetColor("#314656");
|
||||
m_CandlestickBorderColor = ColorUtil.GetColor("#c23531");
|
||||
m_CandlestickBorderColor0 = ColorUtil.GetColor("#314656");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user