KrithikaM
KrithikaM

Reputation: 11

Aspose Slides to Draw chart with dual Y Axis without secondaryhorizontalaxis being plotted

Is it possible to Draw dual Y charts without Secondary X-Axis(horizontal axis) using Aspose slides api, given we have 2 series one being ClusteredColumn and other being ScatterWithStraightLinesAndMarkers ? (Here we are assuming that the values for each of the series is plotted on the left and right Y axis respectively). Can someone help me with this ? Thanks in advance.

On a side note I also wanted to know if Aspose Slides supports Powerpoint Version 2013? I am seeing issues with my slide when I set chart style. Unfortunately I have to open and PPTX file and fix the chart style.

Upvotes: 1

Views: 591

Answers (1)

Mudassir
Mudassir

Reputation: 433

@KrithikaM,

I have observed your requirements for plotting chart on multiple axis. I suggest you to please try using following sample code where by I have added clustered column chart on one axis and line on other one. I hope the shared sample will be helpful. Secondly, Aspose.Slides also supports MSO charts in PowerPoint. If you have any issue with chars, you may share with us and we will investigate that for you.

public static void chartwithmultipleTypes()
{
    //Instantiate Presentation class that represents PPTX file//Instantiate Presentation class that represents PPTX file
    Presentation pres = new Presentation();

    //Access first slide
    ISlide sld = pres.Slides[0];

    // Add chart with default data
    IChart chart = sld.Shapes.AddChart(ChartType.ClusteredColumn, 0, 0, 500, 500);

    //Setting chart Title
    //chart.ChartTitle.TextFrameForOverriding.Text = "Sample Title";
    chart.ChartTitle.AddTextFrameForOverriding("Sample Title");
    chart.ChartTitle.TextFrameForOverriding.TextFrameFormat.CenterText = NullableBool.True;
    chart.ChartTitle.Height = 20;
    chart.HasTitle = true;

    //Set first series to Show Values
    chart.ChartData.Series[0].Labels.DefaultDataLabelFormat.ShowValue = true;

    //Setting the index of chart data sheet
    int defaultWorksheetIndex = 0;

    //Getting the chart data worksheet
    IChartDataWorkbook fact = chart.ChartData.ChartDataWorkbook;

    //Delete default generated series and categories
    chart.ChartData.Series.Clear();
    chart.ChartData.Categories.Clear();
    int s = chart.ChartData.Series.Count;
    s = chart.ChartData.Categories.Count;

    //Adding new series
    chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 0, 1, "Series 1"), chart.Type);
    chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 0, 2, "Series 2"), chart.Type);

    //Adding new categories
    chart.ChartData.Categories.Add(fact.GetCell(defaultWorksheetIndex, 1, 0, "Caetegoty 1"));
    chart.ChartData.Categories.Add(fact.GetCell(defaultWorksheetIndex, 2, 0, "Caetegoty 2"));
    chart.ChartData.Categories.Add(fact.GetCell(defaultWorksheetIndex, 3, 0, "Caetegoty 3"));

    //Take first chart series
    IChartSeries series = chart.ChartData.Series[0];

    //Now populating series data

    series.DataPoints.AddDataPointForBarSeries(fact.GetCell(defaultWorksheetIndex, 1, 1, 20));
    series.DataPoints.AddDataPointForBarSeries(fact.GetCell(defaultWorksheetIndex, 2, 1, 50));
    series.DataPoints.AddDataPointForBarSeries(fact.GetCell(defaultWorksheetIndex, 3, 1, 30));

    //Setting fill color for series
    series.Format.Fill.FillType = FillType.Solid;
    series.Format.Fill.SolidFillColor.Color = Color.Red;


    //Take second chart series
    series = chart.ChartData.Series[1];

    //Now populating series data
    series.DataPoints.AddDataPointForBarSeries(fact.GetCell(defaultWorksheetIndex, 1, 2, 30));
    series.DataPoints.AddDataPointForBarSeries(fact.GetCell(defaultWorksheetIndex, 2, 2, 10));
    series.DataPoints.AddDataPointForBarSeries(fact.GetCell(defaultWorksheetIndex, 3, 2, 60));

    //Setting fill color for series
    series.Format.Fill.FillType = FillType.Solid;
    series.Format.Fill.SolidFillColor.Color = Color.Green;


    //create custom labels for each of categories for new series

    //first label will be show Category name
    IDataLabel lbl = series.DataPoints[0].Label;
    lbl.DataLabelFormat.ShowCategoryName = true;

    lbl = series.DataPoints[1].Label;
    lbl.DataLabelFormat.ShowSeriesName = true;

    //Show value for third label
    lbl = series.DataPoints[2].Label;
    lbl.DataLabelFormat.ShowValue = true;
    lbl.DataLabelFormat.ShowSeriesName = true;
    lbl.DataLabelFormat.Separator = "/";


    /////Addding second type
    //Add new series
    series=chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 0, 3, "Series 3"), ChartType.ScatterWithSmoothLines);


    //Add new point (1:3) there.
    series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 1, 3, 10), fact.GetCell(defaultWorksheetIndex, 1, 4, 13));

    //Add new point (2:10)
    series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 2, 3, 20), fact.GetCell(defaultWorksheetIndex, 2, 4, 15));



    //Changing the chart series marker
    series.Marker.Size = 10;
    series.Marker.Symbol = MarkerStyleType.Star;
    series.PlotOnSecondAxis = true;

    //Take second chart series
    series=chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 0, 5, "Series 4"), ChartType.ScatterWithStraightLinesAndMarkers);

    //Add new point (5:2) there.
    series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 1, 5, 5), fact.GetCell(defaultWorksheetIndex, 1, 6, 2));

    //Add new point (3:1)
    series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 2, 5, 3), fact.GetCell(defaultWorksheetIndex, 2, 6, 1));

    //Add new point (2:2)
    series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 3, 5, 2), fact.GetCell(defaultWorksheetIndex, 3, 6, 2));

    //Add new point (5:1)
    series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 4, 5, 5), fact.GetCell(defaultWorksheetIndex, 4, 6, 1));

    //Changing the chart series marker
    series.Marker.Size = 10;
    series.Marker.Symbol = MarkerStyleType.Circle;

    series.PlotOnSecondAxis = true;


    //Save presentation with chart
    pres.Save("C:\Presentations\AsposeChart.pptx", SaveFormat.Pptx);
}

I am working as Support developer/ Evangelist at Aspose.

Upvotes: 1

Related Questions