PDA

View Full Version : رسم نمودار



Maryam IT
سه شنبه 04 شهریور 1393, 23:07 عصر
سلام من با کد زیر میخوام نمودار بکشم ولی به خطی که قرمز کردم خطای object reference not set to an instan...
البته کد رو از یک ویدیوی آموزشی نوشتم.
نمیدونم مشکل از کجاست؟
private void button3_Click(object sender, EventArgs e) {
chart1 = new Chart();
ChartArea chartArea1 = new ChartArea();
chart1.ChartAreas.Add(chartArea1);
Series series1 = new Series();
chart1.Series.Add(series1);


for (int i = 0; i < prediction_year; i++)
{
series1.Points.Add(Concentration[i]).AxisLabel = Convert.ToString(1393 + i);
}
chart1.Series[0].ChartType = SeriesChartType.Line;
chart1.Location = new System.Drawing.Point(30, 40);
chart1.Size = new System.Drawing.Size(500, 300);
chart1.Legends.Add("");
chart1.Series[0].LegendText = "غلظت آلاینده";
chart1.ChartAreas[0].AxisX.LabelStyle.Interval = 1;
this.Controls["gbxChart"].Controls.Clear();
this.Controls["gbxChart"].Controls.Add(chart1);
{

Maryam IT
سه شنبه 04 شهریور 1393, 23:41 عصر
یه بارم با این کد نوشتم که خطای زیر رو میده و باز نمیدونم چیکارش کنم....
a chart element with the name "series1" already exists in the 'seriescollection'

try {
chart1.Palette = ChartColorPalette.Berry;
chart1.Titles.Clear();
chart1.Titles.Add("نمودار");
chart1.Series.Clear();
Series series = new Series();
series.ChartType = SeriesChartType.Candlestick;
for (int i = 0; i < prediction_year; i++)
{
series.Points.AddXY(1393 + i, Concentration[i]);
chart1.Series.Add(series);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error");
}

aminmousavi
چهارشنبه 05 شهریور 1393, 05:33 صبح
سلام دوست عزیز .
بنده کد دومی که گذاشتین رو بررسی کردم ، خطایی که میده برای اینه که میگه همچین Series موجود هست ، شما چون میتونید توی هر Series ، مقدار n تا Point رو ذخیره کنین ، لازم نیست توی حلقه کد

chart1.Series.Add(series);

رو بزارین ، برای رفع خطا کافیه کد بالا رو بزارین خارج بدنه حلقه

Maryam IT
چهارشنبه 05 شهریور 1393, 19:09 عصر
خیلی ممنون نمودار رو کشید
حالا یه مشکل دیگه با همین کد
try { chart1.Palette = ChartColorPalette.Berry;
chart1.Titles.Clear();
chart1.Titles.Add("نمودار");
chart1.Series.Clear();
Series series = new Series();
series.ChartType = SeriesChartType.line;
for (int i = 0; i < prediction_year; i++)
{
series.Points.AddXY(1393 + i, Concentration[i]);


}
chart1.Series.Add(series);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error");
}

ببینید من نمودارم خطی هست و نموداری که میکشه یه خط آبی کم رنگ هست که پهناشم خیلی کمه
میخوام پهنای خط و رنگشو عوض کنم ولی کدای زیر جواب نمیده! اینم راهنماییم کنید لطفا
chart1.BorderlineWidth = 10;
chart1.BorderlineColor = Color.Navy;

aminmousavi
چهارشنبه 05 شهریور 1393, 19:19 عصر
قبل از حلقه کد زیر رو بزارید :


series.BorderWidth = 10;
series.BorderColor = Color.Red;
series.Color = Color.Yellow;


به طور کلی وقتی میخواهید برای هر Series از نمودارتون مشخصاتی بدید باید مشخصاتی که میخواید رو به series بدید ، نه خود چارت