增加Radius、Area两种南丁格尔玫瑰图展示类型

This commit is contained in:
monitor1394
2019-07-29 08:01:39 +08:00
parent a756f70e74
commit 08230727df
4 changed files with 44 additions and 7 deletions

View File

@@ -59,7 +59,9 @@ namespace XCharts
if (m_SerieLabelToggle) if (m_SerieLabelToggle)
{ {
height += 11 * EditorGUIUtility.singleLineHeight + 10 * EditorGUIUtility.standardVerticalSpacing; height += 11 * EditorGUIUtility.singleLineHeight + 10 * EditorGUIUtility.standardVerticalSpacing;
}else{ }
else
{
height = EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing; height = EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
} }
return height; return height;

View File

@@ -16,10 +16,25 @@ namespace XCharts
EffectScatter EffectScatter
} }
/// <summary>
/// Whether to show as Nightingale chart, which distinguishs data through radius.
/// 是否展示成南丁格尔图,通过半径区分数据大小。
/// </summary>
public enum RoseType public enum RoseType
{ {
/// <summary>
/// Don't show as Nightingale chart.不展示成南丁格尔玫瑰图
/// </summary>
None, None,
/// <summary>
/// Use central angle to show the percentage of data, radius to show data size.
/// 扇区圆心角展现数据的百分比,半径展现数据的大小。
/// </summary>
Radius, Radius,
/// <summary>
/// All the sectors will share the same central angle, the data size is shown only through radiuses.
/// 所有扇区圆心角相同,仅通过半径展现数据大小。
/// </summary>
Area Area
} }
@@ -55,6 +70,10 @@ namespace XCharts
public int axisIndex { get { return m_AxisIndex; } set { m_AxisIndex = value; } } public int axisIndex { get { return m_AxisIndex; } set { m_AxisIndex = value; } }
public SerieSymbol symbol { get { return m_Symbol; } set { m_Symbol = value; } } public SerieSymbol symbol { get { return m_Symbol; } set { m_Symbol = value; } }
public bool clickOffset { get { return m_ClickOffset; } set { m_ClickOffset = value; } } public bool clickOffset { get { return m_ClickOffset; } set { m_ClickOffset = value; } }
/// <summary>
/// Whether to show as Nightingale chart.
/// 是否展示成南丁格尔图,通过半径区分数据大小。
/// </summary>
public RoseType roseType { get { return m_RoseType; } set { m_RoseType = value; } } public RoseType roseType { get { return m_RoseType; } set { m_RoseType = value; } }
public float space { get { return m_Space; } set { m_Space = value; } } public float space { get { return m_Space; } set { m_Space = value; } }
public float[] center { get { return m_Center; } set { m_Center = value; } } public float[] center { get { return m_Center; } set { m_Center = value; } }

View File

@@ -118,6 +118,14 @@ namespace XCharts
float totalDegree = 360; float totalDegree = 360;
float startDegree = 0; float startDegree = 0;
int showdataCount = 0;
if (serie.roseType == RoseType.Area)
{
foreach (var sd in serie.data)
{
if (sd.show) showdataCount++;
}
}
for (int n = 0; n < data.Count; n++) for (int n = 0; n < data.Count; n++)
{ {
var serieData = data[n]; var serieData = data[n];
@@ -144,7 +152,7 @@ namespace XCharts
tempData.angleList.Add(0); tempData.angleList.Add(0);
continue; continue;
} }
float degree = totalDegree * value / tempData.dataTotal; float degree = serie.roseType == RoseType.Area ? (totalDegree / showdataCount) : (totalDegree * value / tempData.dataTotal);
float toDegree = startDegree + degree; float toDegree = startDegree + degree;
float outSideRadius = serie.roseType > 0 ? float outSideRadius = serie.roseType > 0 ?
@@ -276,6 +284,14 @@ namespace XCharts
float totalDegree = 360; float totalDegree = 360;
float startDegree = 0; float startDegree = 0;
int showdataCount = 0;
if (serie.roseType == RoseType.Area)
{
foreach (var sd in serie.data)
{
if (sd.show) showdataCount++;
}
}
for (int n = 0; n < data.Count; n++) for (int n = 0; n < data.Count; n++)
{ {
var serieData = data[n]; var serieData = data[n];
@@ -302,7 +318,7 @@ namespace XCharts
tempData.angleList.Add(0); tempData.angleList.Add(0);
continue; continue;
} }
float degree = totalDegree * value / tempData.dataTotal; float degree = serie.roseType == RoseType.Area ? (totalDegree / showdataCount) : (totalDegree * value / tempData.dataTotal);
float toDegree = startDegree + degree; float toDegree = startDegree + degree;
float outSideRadius = serie.roseType > 0 ? float outSideRadius = serie.roseType > 0 ?
@@ -310,7 +326,6 @@ namespace XCharts
tempData.outsideRadius; tempData.outsideRadius;
if (serieData.highlighted) if (serieData.highlighted)
{ {
//color *= 1.2f;
outSideRadius += m_Pie.tooltipExtraRadius; outSideRadius += m_Pie.tooltipExtraRadius;
} }
var offset = serie.space; var offset = serie.space;

View File

@@ -23,7 +23,8 @@ QQ交流群XCharts交流群202030963
## 更新日志 ## 更新日志
* 2019.07.29)增加`SerieLabel`配置饼图标签,支持`Center``Inside``Outside`等显示位置 * 2019.07.29)增加`Radius``Area`两种南丁格尔玫瑰图展示类型
* 2019.07.29)增加`SerieLabel`配置饼图标签,支持`Center``Inside``Outside`等显示位置
* 2019.07.28)增加`PieChart`多饼图支持 * 2019.07.28)增加`PieChart`多饼图支持
* 2019.07.23)优化`Theme`主题的自定义,切换主题时自定义配置不受影响 * 2019.07.23)优化`Theme`主题的自定义,切换主题时自定义配置不受影响
* 2019.07.22)增加`EffectScatter`类型的散点图 * 2019.07.22)增加`EffectScatter`类型的散点图