2017-02-15 3 views
1

Является ли их любым возможным способом получить разные цвета по каждому значению X-Axis радарной диаграммы?MS Charts: разные цвета по значениям меток

Уже пробовал пользовательские наклейки, но это не сработало.

Любая помощь будет очень признательна.

enter image description here

ответ

1

Есть ни свойства, ни CustomAttributes для достижения этой цели для AxisLabels.

Но CustomLabels прекрасно справится с этой задачей.

Вот пример, который добавляет CustumLabel для каждого DataPoint в Series и дает ему случайный цвет:

enter image description here

Настройка данных:

Random rnd = new Random(0); 
List<Color> colors = new List<Color>() { Color.Red, Color.Firebrick, Color.Gold, 
    Color.DeepPink, Color.Azure, Color.IndianRed, Color.ForestGreen }; 

ChartArea ca = chart.ChartAreas[0]; 

Series s = chart.Series[0]; 

for (int i = 1; i < 7; i++) 
{ 
    s.Points.AddXY(i, i+ rnd.Next(20 - i)); 
} 

Добавить CustomLabels:

foreach (var dp in s.Points) 
{ 
    CustomLabel cl = new CustomLabel(); 
    cl.FromPosition = dp.XValue; 
    cl.ToPosition = dp.XValue ; 
    cl.Text = dp.YValues[0]+ "$"; 
    cl.ForeColor = colors[rnd.Next(colors.Count)]; 

    ca.AxisX.CustomLabels.Add(cl); 
} 

Обратите внимание, что для ChartType Radar это довольно просто; для большинства других типов получение FromPosition и ToPosition довольно сложно: там вам нужно вычислить (обычно) центр между двумя точками ..

+0

Святая корова! Это было потрясающе. Большое спасибо. – Kasra

+0

Возможно ли получить цвета «DataPoint» на «MarkerBorderColor»? @TaW – Kasra

+0

Несомненно. Убедитесь, что вы установили 'MarkerStyle', хотя ..! - 'dp.MarkerBorderColor = cl.ForeColor; dp.MarkerColor = Color.MediumAquamarine; dp.MarkerStyle = MarkerStyle.Diamond; dp.MarkerSize = 10; '- [Пример] (http://imgur.com/a/TTrcl) – TaW

Смежные вопросы