PDA

View Full Version : سوال: ترسيم چارت با چندین ستون



MasoudAdmin
شنبه 15 شهریور 1399, 18:38 عصر
با سلام به همه
من یک گزارش آماری تو برنامم تهیه کردم که جدول رو بر اساس ماه سال و نوع کالا و تعدادش پر میشه. حالا میخوام این جدول رو در چارت نمایش بدم. مثل تصویر پیوست. البته در تصویر 4 ماه سال آمده. حالا ممکنه اون سالی که گزارش گرفته میشه 12 ماه سال نباشه بر اساس ماه های گذشته از سال این جدول تکمیل میشه.
152134
چجوری میتونم تو برنامم بر اساس جدولی که تکمیل میشه همچین چارتی رو برنامه ترسیم کنه:متفکر:
ممنون میشم کمکم کنید.

md3848
شنبه 15 شهریور 1399, 19:11 عصر
تو چارت، میتونی Series های مختلفی ( نمودار های مختلفی ) ایجاد کنی و رنگ و خصوصیات هر کدوم رو جداگونه تنظیم کنی ( فقط باید نوع چارت همشون رو میله ای تعریف کنی ) و در آخر اضافشون کنی به Chart، و به هر کدوم داده مخصوص به خودشو بدی، حالا نمیدونم اون وقفه ای که چارت رو بروز رسانی میکنه، همونجا میتونی بیای بگی داده رو به چارت هم اضافه کنه،

این از کد تعریف 2 تا series و دادن به چارت مربوطه :
#region init series1 [ Reference ]
Series series1 = chart_PrintError.Series.Add("Reference");
series1.IsValueShownAsLabel = false;
series1.IsVisibleInLegend = false;
series1.ChartType = SeriesChartType.FastLine;
series1.Color = Color.Black;
series1.BorderWidth = 2;
series1.MarkerSize = 8;
series1.MarkerStyle = MarkerStyle.Circle;
series1.MarkerColor = Color.White;
series1.MarkerBorderWidth = 2;
series1.MarkerBorderColor = Color.Black;
#endregion

#region init series2 [ Normal ]
Series series2 = chart_PrintError.Series.Add("Normal");
series2.IsValueShownAsLabel = false;
series2.IsVisibleInLegend = false;
series2.ChartType = SeriesChartType.FastLine;
series2.Color = Color.Blue;
series2.BorderWidth = 2;
series2.MarkerSize = 8;
series2.MarkerStyle = MarkerStyle.Circle;
series2.MarkerColor = Color.White;
series2.MarkerBorderWidth = 2;
series2.MarkerBorderColor = Color.Blue;
#endregion

اینم از نمونه کد اضافه کردن داده به Series مدنظر :
series1.Points.AddXY(Angle, DDM);

MasoudAdmin
شنبه 15 شهریور 1399, 21:56 عصر
با سلام
طبق جدولی که دارم برای هر کالایی یک Series تعریف کردم و این کد رو نوشتم ولی خروجی مشکل داره برای هر کالایی تو هر ماه تکرار میشه:


for (int i = 0; i < this.dgvStatistics.RowCount; i++)
{
chartShahrsazi.Series["A"].Points.AddXY(this.dgvStatistics.Rows[i].Cells[0].Value.ToString(), this.dgvStatistics.Rows[i].Cells[2].Value.ToString());
chartShahrsazi.Series["B"].Points.AddXY(this.dgvStatistics.Rows[i].Cells[0].Value.ToString(), this.dgvStatistics.Rows[i].Cells[2].Value.ToString());
chartShahrsazi.Series["C"].Points.AddXY(this.dgvStatistics.Rows[i].Cells[0].Value.ToString(), this.dgvStatistics.Rows[i].Cells[2].Value.ToString());
chartShahrsazi.Series["D"].Points.AddXY(this.dgvStatistics.Rows[i].Cells[0].Value.ToString(), this.dgvStatistics.Rows[i].Cells[2].Value.ToString());
chartShahrsazi.Series["E"].Points.AddXY(this.dgvStatistics.Rows[i].Cells[0].Value.ToString(), this.dgvStatistics.Rows[i].Cells[2].Value.ToString());
}

MasoudAdmin
یک شنبه 16 شهریور 1399, 15:45 عصر
با سلام
درستش کردم. با توجه به اینکه باید بر اساس جدولی که نتیجه گزارش رو میاورد چارت رو پر می کردم باید تو حلقه شرط می گداشتم:


if("A")
chartShahrsazi.Series["A"].Points.AddXY(this.dgvStatistics.Rows[i].Cells[0].Value.ToString(), this.dgvStatistics.Rows[i].Cells[2].Value.ToString());
if("B")
chartShahrsazi.Series["B"].Points.AddXY(this.dgvStatistics.Rows[i].Cells[0].Value.ToString(), this.dgvStatistics.Rows[i].Cells[2].Value.ToString());
.
.
.