Chart Axis in Word document

8 Apr 202424 minutes to read

Charts typically have two axes that are used to measure and categorize data.

  • Horizontal axis (also known as category axis or x axis).
  • Vertical axis (also known as value axis or y axis).

Using DocIO, you can customize the axis in the chart.

Set the Axis Title

The following code snippet illustrates how to set the title in axis.

//Set the horizontal (category) axis title.
chart.PrimaryCategoryAxis.Title = "Products";
//Set the Vertical (value) axis title.
chart.PrimaryValueAxis.Title = "In Dollars";
//Set the horizontal (category) axis title.
chart.PrimaryCategoryAxis.Title = "Products";
//Set the Vertical (value) axis title.
chart.PrimaryValueAxis.Title = "In Dollars";
' Set the horizontal (category) axis title.
chart.PrimaryCategoryAxis.Title = "Products"
' Set the vertical (value) axis title.
chart.PrimaryValueAxis.Title = "In Dollars"

Customization of Border

The following code snippet illustrates how to customize the border of Horizontal and vertical category axis.

//Customize the horizontal category axis.
chart.PrimaryCategoryAxis.Border.LinePattern = OfficeChartLinePattern.CircleDot;
chart.PrimaryCategoryAxis.Border.LineColor = Syncfusion.Drawing.Color.Blue;
chart.PrimaryCategoryAxis.Border.LineWeight = OfficeChartLineWeight.Hairline;

//Customize the vertical category axis.
chart.PrimaryValueAxis.Border.LinePattern = OfficeChartLinePattern.CircleDot;
chart.PrimaryValueAxis.Border.LineColor = Syncfusion.Drawing.Color.Blue;
chart.PrimaryValueAxis.Border.LineWeight = OfficeChartLineWeight.Hairline;
//Customize the horizontal category axis.
chart.PrimaryCategoryAxis.Border.LinePattern = OfficeChartLinePattern.CircleDot;
chart.PrimaryCategoryAxis.Border.LineColor = Color.Blue;
chart.PrimaryCategoryAxis.Border.LineWeight = OfficeChartLineWeight.Hairline;

//Customize the vertical category axis.
chart.PrimaryValueAxis.Border.LinePattern = OfficeChartLinePattern.CircleDot;
chart.PrimaryValueAxis.Border.LineColor = Color.Blue;
chart.PrimaryValueAxis.Border.LineWeight = OfficeChartLineWeight.Hairline;
' Customize the horizontal category axis.
chart.PrimaryCategoryAxis.Border.LinePattern = OfficeChartLinePattern.CircleDot
chart.PrimaryCategoryAxis.Border.LineColor = Color.Blue
chart.PrimaryCategoryAxis.Border.LineWeight = OfficeChartLineWeight.Hairline

' Customize the vertical value axis.
chart.PrimaryValueAxis.Border.LinePattern = OfficeChartLinePattern.CircleDot
chart.PrimaryValueAxis.Border.LineColor = Color.Blue
chart.PrimaryValueAxis.Border.LineWeight = OfficeChartLineWeight.Hairline

Customization of Font

The following code snippet illustrates how to customize the border of Horizontal and vertical category axis.

//Customize the horizontal category axis font.
chart.PrimaryCategoryAxis.Font.Color = OfficeKnownColors.Red;
chart.PrimaryCategoryAxis.Font.FontName = "Calibri";
chart.PrimaryCategoryAxis.Font.Bold = true;
chart.PrimaryCategoryAxis.Font.Size = 20;

//Customize the vertical category axis font.
chart.PrimaryValueAxis.Font.Color = OfficeKnownColors.Red;
chart.PrimaryValueAxis.Font.FontName = "Calibri";
chart.PrimaryValueAxis.Font.Bold = true;
chart.PrimaryValueAxis.Font.Size = 20;
//Customize the horizontal category axis font.
chart.PrimaryCategoryAxis.Font.Color = OfficeKnownColors.Red;
chart.PrimaryCategoryAxis.Font.FontName = "Calibri";
chart.PrimaryCategoryAxis.Font.Bold = true;
chart.PrimaryCategoryAxis.Font.Size = 20;

//Customize the vertical category axis font.
chart.PrimaryValueAxis.Font.Color = OfficeKnownColors.Red;
chart.PrimaryValueAxis.Font.FontName = "Calibri";
chart.PrimaryValueAxis.Font.Bold = true;
chart.PrimaryValueAxis.Font.Size = 20;
' Customize the horizontal category axis font.
chart.PrimaryCategoryAxis.Font.Color = OfficeKnownColors.Red
chart.PrimaryCategoryAxis.Font.FontName = "Calibri"
chart.PrimaryCategoryAxis.Font.Bold = True
chart.PrimaryCategoryAxis.Font.Size = 20

' Customize the vertical value axis font.
chart.PrimaryValueAxis.Font.Color = OfficeKnownColors.Red
chart.PrimaryValueAxis.Font.FontName = "Calibri"
chart.PrimaryValueAxis.Font.Bold = True
chart.PrimaryValueAxis.Font.Size = 20

Text Angle Rotation

The following code snippet illustrates how to rotate the text angle for the axis title area.

//Axis title area text angle rotation.
chart.PrimaryValueAxis.TitleArea.TextRotationAngle = 90;
//Axis title area text angle rotation.
chart.PrimaryValueAxis.TitleArea.TextRotationAngle = 90;
' Axis title area text angle rotation.
chart.PrimaryValueAxis.TitleArea.TextRotationAngle = 90

Set the Maximum value in Axis

The following code snippet illustrates how to set the maximum value in the axis.

//Maximum value in the axis.
chart.PrimaryValueAxis.MaximumValue = 14.0;
//Maximum value in the axis.
chart.PrimaryValueAxis.MaximumValue = 14.0;
' Maximum value in the axis.
chart.PrimaryValueAxis.MaximumValue = 14.0

Set the Number format in Axis

The following code snippet illustrates how to set the number format in the axis.

//Number format for axis.
chart.PrimaryValueAxis.NumberFormat = "0.0";
//Number format for axis.
chart.PrimaryValueAxis.NumberFormat = "0.0";
' Number format for axis.
chart.PrimaryValueAxis.NumberFormat = "0.0"

Manage Gridline Visibility

The following code snippet illustrates how to hide or show major and minor gridlines.

//Hiding major gridlines.
chart.PrimaryValueAxis.HasMajorGridLines = false;

//Showing minor gridlines.
chart.PrimaryValueAxis.HasMinorGridLines = true;
//Hiding major gridlines.
chart.PrimaryValueAxis.HasMajorGridLines = false;

//Showing minor gridlines.
chart.PrimaryValueAxis.HasMinorGridLines = true;
' Hiding major gridlines.
chart.PrimaryValueAxis.HasMajorGridLines = False

' Showing minor gridlines.
chart.PrimaryValueAxis.HasMinorGridLines = True

Resize the Axis Title Area

The following code snippet illustrates how to resize the axis title area.

//Manually resizing axis title area using Layout.
chart.PrimaryValueAxis.TitleArea.Layout.Left = 15;
chart.PrimaryValueAxis.TitleArea.Layout.Top = 20;
chart.PrimaryCategoryAxis.TitleArea.Layout.Left = 25;
chart.PrimaryCategoryAxis.TitleArea.Layout.Top = 20;

//Manually resizing axis title area using Manual Layout.
chart.PrimaryValueAxis.TitleArea.Layout.ManualLayout.Left = 0.04;
chart.PrimaryValueAxis.TitleArea.Layout.ManualLayout.Top = 0.34;
chart.PrimaryCategoryAxis.TitleArea.Layout.ManualLayout.Left = 0.38;
chart.PrimaryCategoryAxis.TitleArea.Layout.ManualLayout.Top = 0.95;
//Manually resizing axis title area using Layout.
chart.PrimaryValueAxis.TitleArea.Layout.Left = 15;
chart.PrimaryValueAxis.TitleArea.Layout.Top = 20;
chart.PrimaryCategoryAxis.TitleArea.Layout.Left = 25;
chart.PrimaryCategoryAxis.TitleArea.Layout.Top = 20;

//Manually resizing axis title area using Manual Layout.
chart.PrimaryValueAxis.TitleArea.Layout.ManualLayout.Left = 0.04;
chart.PrimaryValueAxis.TitleArea.Layout.ManualLayout.Top = 0.34;
chart.PrimaryCategoryAxis.TitleArea.Layout.ManualLayout.Left = 0.38;
chart.PrimaryCategoryAxis.TitleArea.Layout.ManualLayout.Top = 0.95;
' Manually resizing axis title area using Layout.
chart.PrimaryValueAxis.TitleArea.Layout.Left = 15
chart.PrimaryValueAxis.TitleArea.Layout.Top = 20
chart.PrimaryCategoryAxis.TitleArea.Layout.Left = 25
chart.PrimaryCategoryAxis.TitleArea.Layout.Top = 20

' Manually resizing axis title area using Manual Layout.
chart.PrimaryValueAxis.TitleArea.Layout.ManualLayout.Left = 0.04
chart.PrimaryValueAxis.TitleArea.Layout.ManualLayout.Top = 0.34
chart.PrimaryCategoryAxis.TitleArea.Layout.ManualLayout.Left = 0.38
chart.PrimaryCategoryAxis.TitleArea.Layout.ManualLayout.Top = 0.95

Set the Secondary Axis

The following code snippet illustrates how to use secondary axis in chart.

//Use Secondary Axis.
chart.Series[1].UsePrimaryAxis = false;
//Use Secondary Axis.
chart.Series[1].UsePrimaryAxis = false;
' Use Secondary Axis for the second series.
chart.Series(1).UsePrimaryAxis = False

Secondary Value Properties

The following code snippet illustrates how to customize secondary value axis in chart.

//MaxCross in axis.
chart.SecondaryValueAxis.IsMaxCross = true;

//Axis title.
chart.SecondaryValueAxis.Title = "Temperature,deg.F";

//Axis title area text angle rotation.
chart.SecondaryValueAxis.TitleArea.TextRotationAngle = 90;
//MaxCross in axis.
chart.SecondaryValueAxis.IsMaxCross = true;

//Axis title.
chart.SecondaryValueAxis.Title = "Temperature,deg.F";

//Axis title area text angle rotation.
chart.SecondaryValueAxis.TitleArea.TextRotationAngle = 90;
' Set MaxCross for the secondary value axis.
chart.SecondaryValueAxis.IsMaxCross = True

' Set the axis title for the secondary value axis.
chart.SecondaryValueAxis.Title = "Temperature,deg.F"

' Set the axis title area text rotation angle for the secondary value axis.
chart.SecondaryValueAxis.TitleArea.TextRotationAngle = 90

Secondary Category Properties

The following code snippet illustrates how to customize secondary category axis in chart.

//MaxCross in axis.
chart.SecondaryCategoryAxis.IsMaxCross = true;

//Select border line color.
chart.SecondaryCategoryAxis.Border.LineColor = Syncfusion.Drawing.Color.Transparent;

//Select major tick mark option.
chart.SecondaryCategoryAxis.MajorTickMark = OfficeTickMark.TickMark_Cross;

//Select tick label position.
chart.SecondaryCategoryAxis.TickLabelPosition = OfficeTickLabelPosition.TickLabelPosition_None;
//MaxCross in axis.
chart.SecondaryCategoryAxis.IsMaxCross = true;

//Select border line color.
chart.SecondaryCategoryAxis.Border.LineColor = Color.Transparent;

//Select major tick mark option.
chart.SecondaryCategoryAxis.MajorTickMark = OfficeTickMark.TickMark_Cross;

//Select tick label position.
chart.SecondaryCategoryAxis.TickLabelPosition = OfficeTickLabelPosition.TickLabelPosition_None;
' Set MaxCross for the secondary category axis.
chart.SecondaryCategoryAxis.IsMaxCross = True

' Select the border line color and make it transparent.
chart.SecondaryCategoryAxis.Border.LineColor = Color.Transparent

' Select the major tick mark option as Cross.
chart.SecondaryCategoryAxis.MajorTickMark = OfficeTickMark.TickMark_Cross

' Select the tick label position as None.
chart.SecondaryCategoryAxis.TickLabelPosition = OfficeTickLabelPosition.TickLabelPosition_None

The complete code snippet illustrating the above options is shown below.

FileStream fileStreamPath = new FileStream(Path.GetFullPath(@"../../../Data/Template.docx"), FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
//Open an existing document from file system through constructor of WordDocument class
using (WordDocument document = new WordDocument(fileStreamPath, FormatType.Docx))
{
    //Get the paragraph
    WParagraph paragraph = document.LastParagraph;
    //Get the chart entity
    WChart chart = paragraph.ChildEntities[0] as WChart;

    //Set the horizontal (category) axis title.
    chart.PrimaryCategoryAxis.Title = "Months";
    //Set the Vertical (value) axis title.
    chart.PrimaryValueAxis.Title = "Precipitation,in.";
    //Set title for secondary value axis
    chart.SecondaryValueAxis.Title = "Temperature,deg.F";

    //Customize the horizontal category axis.
    chart.PrimaryCategoryAxis.Border.LinePattern = OfficeChartLinePattern.Solid;
    chart.PrimaryCategoryAxis.Border.LineColor = Syncfusion.Drawing.Color.Blue;
    chart.PrimaryCategoryAxis.Border.LineWeight = OfficeChartLineWeight.Hairline;

    //Customize the vertical category axis.
    chart.PrimaryValueAxis.Border.LinePattern = OfficeChartLinePattern.Solid;
    chart.PrimaryValueAxis.Border.LineColor = Syncfusion.Drawing.Color.Blue;
    chart.PrimaryValueAxis.Border.LineWeight = OfficeChartLineWeight.Narrow;

    //Customize the horizontal category axis font.
    chart.PrimaryCategoryAxis.Font.Color = OfficeKnownColors.Red;
    chart.PrimaryCategoryAxis.Font.FontName = "Calibri";
    chart.PrimaryCategoryAxis.Font.Bold = true;
    chart.PrimaryCategoryAxis.Font.Size = 8;

    //Customize the vertical category axis font.
    chart.PrimaryValueAxis.Font.Color = OfficeKnownColors.Red;
    chart.PrimaryValueAxis.Font.FontName = "Calibri";
    chart.PrimaryValueAxis.Font.Bold = true;
    chart.PrimaryValueAxis.Font.Size = 8;

    //Customize the secondary vertical category axis.
    chart.SecondaryValueAxis.Border.LinePattern = OfficeChartLinePattern.Solid;
    chart.SecondaryValueAxis.Border.LineColor = Syncfusion.Drawing.Color.Blue;
    chart.SecondaryValueAxis.Border.LineWeight = OfficeChartLineWeight.Narrow;

    //Customize the secondary vertical category axis font.
    chart.SecondaryValueAxis.Font.Color = OfficeKnownColors.Red;
    chart.SecondaryValueAxis.Font.FontName = "Calibri";
    chart.SecondaryValueAxis.Font.Bold = true;
    chart.SecondaryValueAxis.Font.Size = 8;

    //Axis title area text angle rotation.
    chart.PrimaryValueAxis.TitleArea.TextRotationAngle = 270;

    //Maximum value in the axis.
    chart.PrimaryValueAxis.MaximumValue = 15;
    chart.PrimaryValueAxis.MinimumValue = 0;
    //Number format for axis.
    chart.PrimaryValueAxis.NumberFormat = "0.0";

    //Hiding major gridlines.
    chart.PrimaryValueAxis.HasMajorGridLines = true;

    //Showing minor gridlines.
    chart.PrimaryValueAxis.HasMinorGridLines = false;

    using (FileStream outputStream = new FileStream(Path.GetFullPath(@"../../../Sample.docx"), FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite))
    {
        //Save the Word file.
        document.Save(outputStream, FormatType.Docx);
    }
}
//Open an existing Word document.
using (WordDocument document = new WordDocument("Template.docx"))
{
    //Get the paragraph
    WParagraph paragraph = document.LastParagraph;
    //Get the chart entity
    WChart chart = paragraph.ChildEntities[0] as WChart;

    //Set the horizontal (category) axis title.
    chart.PrimaryCategoryAxis.Title = "Months";
    //Set the Vertical (value) axis title.
    chart.PrimaryValueAxis.Title = "Precipitation,in.";
    //Set title for secondary value axis
    chart.SecondaryValueAxis.Title = "Temperature,deg.F";

    //Customize the horizontal category axis.
    chart.PrimaryCategoryAxis.Border.LinePattern = OfficeChartLinePattern.Solid;
    chart.PrimaryCategoryAxis.Border.LineColor = Color.Blue;
    chart.PrimaryCategoryAxis.Border.LineWeight = OfficeChartLineWeight.Hairline;

    //Customize the vertical category axis.
    chart.PrimaryValueAxis.Border.LinePattern = OfficeChartLinePattern.Solid;
    chart.PrimaryValueAxis.Border.LineColor = Color.Blue;
    chart.PrimaryValueAxis.Border.LineWeight = OfficeChartLineWeight.Narrow;

    //Customize the horizontal category axis font.
    chart.PrimaryCategoryAxis.Font.Color = OfficeKnownColors.Red;
    chart.PrimaryCategoryAxis.Font.FontName = "Calibri";
    chart.PrimaryCategoryAxis.Font.Bold = true;
    chart.PrimaryCategoryAxis.Font.Size = 8;

    //Customize the vertical category axis font.
    chart.PrimaryValueAxis.Font.Color = OfficeKnownColors.Red;
    chart.PrimaryValueAxis.Font.FontName = "Calibri";
    chart.PrimaryValueAxis.Font.Bold = true;
    chart.PrimaryValueAxis.Font.Size = 8;

    //Customize the secondary vertical category axis.
    chart.SecondaryValueAxis.Border.LinePattern = OfficeChartLinePattern.Solid;
    chart.SecondaryValueAxis.Border.LineColor = Color.Blue;
    chart.SecondaryValueAxis.Border.LineWeight = OfficeChartLineWeight.Narrow;

    //Customize the secondary vertical category axis font.
    chart.SecondaryValueAxis.Font.Color = OfficeKnownColors.Red;
    chart.SecondaryValueAxis.Font.FontName = "Calibri";
    chart.SecondaryValueAxis.Font.Bold = true;
    chart.SecondaryValueAxis.Font.Size = 8;

    //Axis title area text angle rotation.
    chart.PrimaryValueAxis.TitleArea.TextRotationAngle = 270;

    //Maximum value in the axis.
    chart.PrimaryValueAxis.MaximumValue = 15;
    chart.PrimaryValueAxis.MinimumValue = 0;
    //Number format for axis.
    chart.PrimaryValueAxis.NumberFormat = "0.0";

    //Hiding major gridlines.
    chart.PrimaryValueAxis.HasMajorGridLines = true;

    //Showing minor gridlines.
    chart.PrimaryValueAxis.HasMinorGridLines = false;

    //Save the Word file.
    document.Save("Sample.docx");
}
Using document As New WordDocument("Template.docx")
    ' Get the paragraph.
    Dim paragraph As WParagraph = document.LastParagraph
    
    ' Get the chart entity.
    Dim chart As WChart = TryCast(paragraph.ChildEntities(0), WChart)
    
    ' Set the horizontal (category) axis title.
    chart.PrimaryCategoryAxis.Title = "Months"
    
    ' Set the Vertical (value) axis title.
    chart.PrimaryValueAxis.Title = "Precipitation,in."
    
    ' Set title for the secondary value axis.
    chart.SecondaryValueAxis.Title = "Temperature,deg.F"
    
    ' Customize the horizontal category axis.
    chart.PrimaryCategoryAxis.Border.LinePattern = OfficeChartLinePattern.Solid
    chart.PrimaryCategoryAxis.Border.LineColor = Color.Blue
    chart.PrimaryCategoryAxis.Border.LineWeight = OfficeChartLineWeight.Hairline
    
    ' Customize the vertical category axis.
    chart.PrimaryValueAxis.Border.LinePattern = OfficeChartLinePattern.Solid
    chart.PrimaryValueAxis.Border.LineColor = Color.Blue
    chart.PrimaryValueAxis.Border.LineWeight = OfficeChartLineWeight.Narrow
    
    ' Customize the horizontal category axis font.
    chart.PrimaryCategoryAxis.Font.Color = OfficeKnownColors.Red
    chart.PrimaryCategoryAxis.Font.FontName = "Calibri"
    chart.PrimaryCategoryAxis.Font.Bold = True
    chart.PrimaryCategoryAxis.Font.Size = 8
    
    ' Customize the vertical category axis font.
    chart.PrimaryValueAxis.Font.Color = OfficeKnownColors.Red
    chart.PrimaryValueAxis.Font.FontName = "Calibri"
    chart.PrimaryValueAxis.Font.Bold = True
    chart.PrimaryValueAxis.Font.Size = 8
    
    ' Customize the secondary vertical category axis.
    chart.SecondaryValueAxis.Border.LinePattern = OfficeChartLinePattern.Solid
    chart.SecondaryValueAxis.Border.LineColor = Color.Blue
    chart.SecondaryValueAxis.Border.LineWeight = OfficeChartLineWeight.Narrow
    
    ' Customize the secondary vertical category axis font.
    chart.SecondaryValueAxis.Font.Color = OfficeKnownColors.Red
    chart.SecondaryValueAxis.Font.FontName = "Calibri"
    chart.SecondaryValueAxis.Font.Bold = True
    chart.SecondaryValueAxis.Font.Size = 8
    
    ' Axis title area text angle rotation.
    chart.PrimaryValueAxis.TitleArea.TextRotationAngle = 270
    
    ' Maximum value in the axis.
    chart.PrimaryValueAxis.MaximumValue = 15
    chart.PrimaryValueAxis.MinimumValue = 0
    
    ' Number format for axis.
    chart.PrimaryValueAxis.NumberFormat = "0.0"
    
    ' Hiding major gridlines.
    chart.PrimaryValueAxis.HasMajorGridLines = True
    
    ' Showing minor gridlines.
    chart.PrimaryValueAxis.HasMinorGridLines = False
    
    ' Save the Word file.
    document.Save("Sample.docx")
End Using

You can download a complete working sample from GitHub.

Set the Category Label

The following code snippet illustrates how to set the category label.

//Set category labels.
chart.PrimaryCategoryAxis.CategoryLabels = chart.ChartData[2, 1, 11, 1];
//Set category labels.
chart.PrimaryCategoryAxis.CategoryLabels = chart.ChartData[2, 1, 11, 1];
chart.PrimaryCategoryAxis.CategoryLabels = chart.ChartData(2, 1, 11, 1)

See Also