2016-08-26 3 views
0

У меня хороший рабочий график с запасом типизированный график. Когда я попытался добавить строки набранной серии к этой ChartArea я получил большого красного X.Как добавить две разные серии типов в диаграмму C#?

Series ser = new Series(seriesName); 
ser.ChartArea = "Default"; 
ser.Name = seriesName; 
ser.ChartType=SeriesChartType.Line; 
ser.Points.AddXY(1, 1); 
ser.Points.AddXY(1, 2); 
chart1.Series.Add(ser); 

Можно ли добавлять различные типы серий в одном ChartArea?

EDIT

Я попытался применить изменения в соответствии с предложением TAW, но все еще получаю ту же ошибку.

string seriesName = dataGridView1.Rows[rowSelected].Cells[0].Value + "_" + curPeriod + "_" +"line" +dataPoints.Length; 
Series ser = new Series(seriesName); 
chart1.Series.Add(ser); 
chart1.Series[seriesName].ChartArea = chart1.ChartAreas[0].Name; 
chart1.Series[seriesName].ChartType = SeriesChartType.Line; 
chart1.Series[seriesName].Points.AddXY(1, 1); 
chart1.Series[seriesName].Points.AddXY(1, 2); 

Вот инициализация моей диаграммы.

chart1.ChartAreas.Add(new ChartArea("Default")); 
chart1.Series.Add(new Series("Series1")); 
chart1.ChartAreas.Add(new ChartArea("Option")); 
chart1.Series.Add(new Series("Series2")); 
chart1.Series.Add(new Series("Series3")); 
chart1.Series["Series2"].ChartArea = "Option"; 
chart1.Series["Series3"].ChartArea = "Option"; 
chart1.Series["Series1"].ChartArea = "Default"; 
chart1.Series["Series1"].ChartType = SeriesChartType.Stock; 
chart1.Series["Series2"].ChartType = SeriesChartType.Line; 
chart1.Series["Series3"].ChartType = SeriesChartType.Line; 
chart1.Series["Series1"].BorderColor = Color.Green; 
chart1.Series["Series1"].Color = Color.GreenYellow; 
chart1.Series["Series2"].Color = Properties.Settings.Default.InnerPrice; 
chart1.Series["Series3"].Color = Properties.Settings.Default.TemporaryPrice; 
chart1.Series["Series1"]["PriceUpColor"] = "Red"; 
chart1.Series["Series1"]["PriceDownColor"] = "Yellow"; 
chart1.Series["Series1"].IsXValueIndexed = true; 
chart1.Series["Series2"].IsXValueIndexed = false; 
chart1.Series["Series3"].IsXValueIndexed = false; 
chart1.Series["Series1"].XValueType = ChartValueType.DateTime; 

Screen of working chart Может быть кто-то может помочь. Мне нужно рисовать линии в диаграмме! Спасибо заранее!

+0

Что вы нацеливаете: Winforms, WPF, ASP ..? __Always__ правильно помечайте свой вопрос! - Да, хотя не все типы диаграмм могут быть объединены, esp круговая диаграмма не может быть объединена с другими типами. MSDN сообщает для каждого типа диаграммы, что другие типы идут с ним! [stock] (https://msdn.microsoft.com/en-us/library/dd456733.aspx?f=255&MSPPError=-2147217396) можно комбинировать с большинством типов диаграмм. - Что-нибудь смешное в 'seriesname'? - Вы уверены, что (не по умолчанию) имя 'ChartArea'? - У вашего X, вероятно, есть другая причина. – TaW

+0

mind Опубликовать скриншот? – enkryptor

+0

Лучшее сообщение на снимок экрана рабочей версии, а не красный X .. – TaW

ответ

1

Скорее всего, ваши проблемы возникают из-за того, что вы готовите Seriesдо, добавив их в Chart.

Я обнаружил, что я даже не могу добавить очки к серии Stock, прежде чем он будет добавлен в график! Ошибка, которую я получил, утверждал, что я мог только добавить один y-значение для моего DataPoints, что, очевидно, было неправильным, поскольку SeriesChartType.Stock уже был установлен.

Так попробовать этот заказ:

chart1.Series.Clear(); 

string seriesName1 = "stock"; 
Series ser1 = chart1.Series.Add(seriesName1); 

ser1.ChartArea = chart1.ChartAreas[0].Name; 
ser1.Name = seriesName1; 
ser1.ChartType = SeriesChartType.Stock; 

ser1.BorderWidth = 3; 

ser1.Points.AddXY(1, 44, 11, 34, 37); // x, high, low, open, close 
ser1.Points.AddXY(2, 33, 11, 22, 33); 


string seriesName2 = "line"; 
Series ser2 = chart1.Series.Add(seriesName2); 

ser2.ChartArea = chart1.ChartAreas[0].Name; 
ser2.Name = seriesName2; 
ser2.ChartType = SeriesChartType.Line; 
ser2.Points.AddXY(1, 44); 
ser2.Points.AddXY(2, 33); 

enter image description here

сделать Также убедитесь, что переменная seriesName содержит правильную строку!

Update

Глядя на полный код, публикуемую до сих пор, кажется, что вы добавляете один или несколько Series к ChartArea «По умолчанию», которая уже содержит проиндексирован Series («Series1»). Это разрешено только в том случае, если все (прочие) Series в том, что ChartArea: выровнено с первым, то есть с тем же количеством значений. Так как вы только добавить 2 DataPoints, я сомневаюсь, что они ..

MSDN:

Установка Series.IsXValueIndexed свойство истинных причин все серии , причисленные к одной области диаграммы и оси X (первичный или вторичный) до . Вы должны убедиться, что серия выровнена. В противном случае элемент управления Chart выдает исключение. Для получения дополнительной информации см. Выравнивание данных.

Примечание:

При попытке показать невыровненную серию вместе с индексным, который вы можете получить либо:

  • Исключения, объясняя проблему (при запуске из VS)
  • Или Красный X ничего не объясняет, когда запускается из exe или игнорируется исключение в блоке try-catch.
+0

попытался, но все равно получить красный большой X! –

+0

Ваша первая строка создает довольно любопытное серийное имя. Какова фактическая ценность? Можете ли вы заменить ее чем-то менее вовлеченным? Есть сообщения о том, что X происходит от странных серийных имен. Никогда не видел это сам, но стоит попробовать. Также может быть опубликовано изображение рабочей версии (а не X). – TaW

+0

Только что опубликован. Пытался изменить 'seriesName =" series555 ";' но это не вступает в силу –

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