We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy.
Unfortunately, activation email could not send to your email. Please try again.
Syncfusion Feedback

column chart questions

Thread ID:

Created:

Updated:

Platform:

Replies:

132172 Aug 17,2017 10:36 PM UTC Aug 18,2017 11:32 AM UTC ASP.NET MVC 1
loading
Tags: XlsIO
Miranda Johnson
Asked On August 17, 2017 10:36 PM UTC

Given the following chart how do I display the actual value of each column like in image1?  

Also on this example I am saying that the  PrimaryValueAxis.MinorUnit = .5   yet it is displaying in increments of 1  am I doing this wrong?

               //Company Wide Average
                IWorksheet sheet19 = workbook.Worksheets[18];
                sheet19.Range["A1"].Text = "Company wide average for each group";
                sheet19.Range["A1"].CellStyle.Font.Bold = true;
                sheet19.Range["A1"].CellStyle.Font.Size = 18;
                AllGroupAverages allAvg = new AllGroupAverages();
                allAvg.SurveyNumber = SurveyNumber;
                allAvg.SortOn = 0;
                IList<AllGroupAverages_Result> AllAverage = allAvg.GroupAverages();
                sheet19.ImportData(AllAverage, 3, 1, true);
                IChartShape chart19 = sheet19.Charts.Add();
                chart19.ChartType = ExcelChartType.Column_Clustered;
                chart19.DataRange = sheet19.Range["A3:B14"];
                chart19.PrimaryValueAxis.MinimumValue = 0;
                chart19.PrimaryValueAxis.MaximumValue = 5.5;
                chart19.PrimaryValueAxis.MinorUnit = .5;
                chart19.PrimaryValueAxis.Title = "Average Answer";
                chart19.ChartTitle = "";
                chart19.IsSeriesInRows = false;
                chart19.Legend.Position = ExcelLegendPosition.Bottom;
                chart19.Legend.Delete();
                chart19.TopRow = 3;
                chart19.BottomRow = 30;
                chart19.LeftColumn = 1;
                chart19.RightColumn = 15;
                FillSeriesColor(chart19);



Next.
On the next two charts I want to display percentage values both on the axis and in each column as in image 2  how do I accomplish that?

               // Rate Strongly Agree
                IWorksheet sheet20 = workbook.Worksheets[19];
                sheet20.Range["A1"].Text = "Rate for Strongly Agree";
                sheet20.Range["A1"].CellStyle.Font.Bold = true;
                sheet20.Range["A1"].CellStyle.Font.Size = 18;
                AllParticipantsStronglyPercentages apsp = new AllParticipantsStronglyPercentages();
                apsp.SurveyNumber = SurveyNumber;
                apsp.AnswerNumber = "5"; //Strongly Agree
                IList<AllParticipantsStronglyPercentages_Result> AllStronglyAgree = apsp.StronglyPercentages();
                sheet20.ImportData(AllStronglyAgree, 3, 1, true);
                IChartShape chart20 = sheet20.Charts.Add();
                chart20.ChartType = ExcelChartType.Column_Clustered;
                chart20.DataRange = sheet20.Range["A3:B15"];
                chart20.PrimaryValueAxis.MinimumValue = 0;
                chart20.PrimaryValueAxis.MaximumValue = 100;
                chart20.PrimaryValueAxis.MinorUnit = 10;
                chart20.PrimaryValueAxis.Title = "Percent Strongly Agree";
                chart20.ChartTitle = "";
                chart20.IsSeriesInRows = false;
                chart20.Legend.Position = ExcelLegendPosition.Bottom;
                chart20.Legend.Delete();
                chart20.TopRow = 3;
                chart20.BottomRow = 30;
                chart20.LeftColumn = 1;
                chart20.RightColumn = 15;
                IChartSerie serie1 = chart20.Series[0];
                serie1.SerieFormat.Fill.ForeColor = Color.Green;

There are some zero percentage values on the 3rd chart

Attachment: Big_Tex_Bank_46742989.zip

Sridhar Sukumar [Syncfusion]
Replied On August 18, 2017 11:32 AM UTC

Hi Miranda, 
 
Thank you for contacting Syncfusion support. 
 
Please find the response for the queries from below table. 
 
Query 
Response 
Given the following chart how do I display the actual value of each column like in image1?   
 
Also on this example I am saying that the  PrimaryValueAxis.MinorUnit = .5   yet it is displaying in increments of 1  am I doing this wrong? 
 
               //Company Wide Average 
                IWorksheet sheet19 = workbook.Worksheets[18]; 
                sheet19.Range["A1"].Text = "Company wide average for each group"; 
                sheet19.Range["A1"].CellStyle.Font.Bold = true; 
                sheet19.Range["A1"].CellStyle.Font.Size = 18; 
                AllGroupAverages allAvg = new AllGroupAverages(); 
                allAvg.SurveyNumber = SurveyNumber; 
                allAvg.SortOn = 0; 
                IList<AllGroupAverages_Result> AllAverage = allAvg.GroupAverages(); 
                sheet19.ImportData(AllAverage, 3, 1, true); 
                IChartShape chart19 = sheet19.Charts.Add(); 
                chart19.ChartType = ExcelChartType.Column_Clustered; 
                chart19.DataRange = sheet19.Range["A3:B14"]; 
                chart19.PrimaryValueAxis.MinimumValue = 0; 
                chart19.PrimaryValueAxis.MaximumValue = 5.5; 
                chart19.PrimaryValueAxis.MinorUnit = .5; 
                chart19.PrimaryValueAxis.Title = "Average Answer"; 
                chart19.ChartTitle = ""; 
                chart19.IsSeriesInRows = false; 
                chart19.Legend.Position = ExcelLegendPosition.Bottom; 
                chart19.Legend.Delete(); 
                chart19.TopRow = 3; 
                chart19.BottomRow = 30; 
                chart19.LeftColumn = 1; 
                chart19.RightColumn = 15; 
                FillSeriesColor(chart19); 
 
Major units are the spacing between the major gridlines on the axis and minor units are the spacing between the minor gridlines on the axis. So, we request you to set the value to major unit to achieve your requirement. Please refer the following code snippet to achieve this. 
 
Code snippet: 
chart.PrimaryValueAxis.MajorUnit = 0.5; 
 
Next. 
On the next two charts I want to display percentage values both on the axis and in each column as in image 2  how do I accomplish that? 
 
               // Rate Strongly Agree 
                IWorksheet sheet20 = workbook.Worksheets[19]; 
                sheet20.Range["A1"].Text = "Rate for Strongly Agree"; 
                sheet20.Range["A1"].CellStyle.Font.Bold = true; 
                sheet20.Range["A1"].CellStyle.Font.Size = 18; 
                AllParticipantsStronglyPercentages apsp = new AllParticipantsStronglyPercentages(); 
                apsp.SurveyNumber = SurveyNumber; 
                apsp.AnswerNumber = "5"; //Strongly Agree 
                IList<AllParticipantsStronglyPercentages_Result> AllStronglyAgree = apsp.StronglyPercentages(); 
                sheet20.ImportData(AllStronglyAgree, 3, 1, true); 
                IChartShape chart20 = sheet20.Charts.Add(); 
                chart20.ChartType = ExcelChartType.Column_Clustered; 
                chart20.DataRange = sheet20.Range["A3:B15"]; 
                chart20.PrimaryValueAxis.MinimumValue = 0; 
                chart20.PrimaryValueAxis.MaximumValue = 100; 
                chart20.PrimaryValueAxis.MinorUnit = 10; 
                chart20.PrimaryValueAxis.Title = "Percent Strongly Agree"; 
                chart20.ChartTitle = ""; 
                chart20.IsSeriesInRows = false; 
                chart20.Legend.Position = ExcelLegendPosition.Bottom; 
                chart20.Legend.Delete(); 
                chart20.TopRow = 3; 
                chart20.BottomRow = 30; 
                chart20.LeftColumn = 1; 
                chart20.RightColumn = 15; 
                IChartSerie serie1 = chart20.Series[0]; 
                serie1.SerieFormat.Fill.ForeColor = Color.Green; 
 
There are some zero percentage values on the 3rd chart 
You can achieve your requirement by workaround method in XlsIO. Please find the workaround method from below table. 
 
Code snippet: 
public static void FillPercentage(IChart chart) 
        { 
 
            foreach (IChartSerie serie in chart.Series) 
            { 
                int dataPointCount = (serie.EnteredDirectlyValues == null) ? serie.Values.Rows.Length : serie.EnteredDirectlyValues.Length; 
                for (int dataPointPos = 0; dataPointPos < dataPointCount; dataPointPos++) 
                { 
                    IChartDataPoint dataPoints = serie.DataPoints[dataPointPos]; 
                    double value; 
                    if (serie.EnteredDirectlyValues == null) 
                        value = serie.Values.Rows[dataPointPos].Number; 
                    else 
                        value = (double)serie.EnteredDirectlyValues.GetValue(dataPointPos); 
 
                    (dataPoints.DataLabels as ChartDataLabelsImpl).Text = value.ToString() + "%"; 
                } 
            } 
        } 
 
 
We have prepared a simple sample to achieve your requirement which can be downloaded from the following link 
 
 
Regards,      
Sridhar. 


CONFIRMATION

This post will be permanently deleted. Are you sure you want to continue?

Sorry, An error occured while processing your request. Please try again later.

Warning Icon You are using an outdated version of Internet Explorer that may not display all features of this and other websites. Upgrade to Internet Explorer 8 or newer for a better experience.Close Icon

;