How to properly set font for x and y axis


https://www.nevron.com/Forum/Topic12578.aspx
Print Topic | Close Window

By Devin Ellis - 6 Years Ago
I have two methods used on my charts for setting the fonts
Most of the charts use SetupChartAxes and some use 
SetXAxisLabels (sorry but you have no code insert 
and when I pasted the code formatting was remove). The SetXAxisLabels is set to bold and the chart below uses that
but the labels do not come out bold. Why is that?


Images

https://www.nevron.com/forum/uploads/images/ac25ea03-b296-41eb-93c5-4582.png






Code


Snippetpublic virtual void SetupChartAxes ( NChart chart Wink{    if ( chart == null Wink        throw new ArgumentNullException ( "chart required" Wink;     var scaleY = new NLinearScaleConfigurator ();    if ( scaleY == null Wink        throw new NullReferenceException ( "Failed to create y axis" Wink;     scaleY.MajorGridStyle.LineStyle.Pattern = LinePattern.Dash;    scaleY.MajorGridStyle.ShowAtWalls = new ChartWallType [] { ChartWallType.Back };    scaleY.InnerMajorTickStyle.Visible = false;     scaleY.LabelStyle.TextStyle.FontStyle.Style = FontStyle.Bold;    scaleY.LabelStyle.TextStyle.FontStyle.EmSize = new NLength ( DefaultFontSize, NGraphicsUnit.Point Wink;    scaleY.LabelStyle.TextStyle.FontStyle.Name = DefaultFontName;     chart.Axis ( StandardAxis.PrimaryY Wink.ScaleConfigurator = scaleY;     var scaleX = new NLinearScaleConfigurator ();    if ( scaleX == null Wink        throw new NullReferenceException ( "Failed to create x axis" Wink;     scaleX.MajorGridStyle.LineStyle.Pattern = LinePattern.Dash;    scaleX.MajorGridStyle.ShowAtWalls = new ChartWallType [] { ChartWallType.Back };    scaleX.InnerMajorTickStyle.Visible = false;     scaleX.LabelStyle.TextStyle.FontStyle.Style = FontStyle.Bold;    scaleX.LabelStyle.TextStyle.FontStyle.EmSize = new NLength ( DefaultFontSize, NGraphicsUnit.Point Wink;    scaleX.LabelStyle.TextStyle.FontStyle.Name = DefaultFontName;     chart.Axis ( StandardAxis.PrimaryX Wink.ScaleConfigurator = scaleX;} public virtual void SetXAxisLabels ( NChart chart Wink{    if ( chart == null Wink        throw new ArgumentNullException ( "chart required" Wink;     // add scale to chart    // hide axis ruler, ticks and automatic labels    var scaleX = new NDateTimeScaleConfigurator ();    if ( scaleX == null Wink        throw new NullReferenceException ( "Failed to create x axis" Wink;     chart.Axis ( StandardAxis.PrimaryX Wink.ScaleConfigurator = scaleX;     scaleX.AutoLabels = false;    scaleX.UseOrigin = false;     scaleX.RulerStyle.BorderStyle.Width = new NLength ( 1 Wink;    scaleX.OuterMajorTickStyle.Length = new NLength ( 5 Wink;    scaleX.InnerMajorTickStyle.Length = new NLength ( 0 Wink;     scaleX.LabelStyle.TextStyle.FontStyle.Style = FontStyle.Bold;    scaleX.LabelStyle.TextStyle.FontStyle.EmSize = new NLength ( DefaultFontSize, NGraphicsUnit.Point Wink;    scaleX.LabelStyle.TextStyle.FontStyle.Name = DefaultFontName; }


By Nevron Support - 6 Years Ago
Hi Devin,
Please post the code with proper formatting its hard to tell what the problem is this way...
By Devin Ellis - 6 Years Ago
I had this in my original message:

(sorry but you have no code insert 
and when I pasted the code formatting was remove).

So I guess we just hit the cancel button to not format.
I thought the cancel would cancel the insert.

Snippet
public virtual void SetupChartAxes ( NChart chart Wink{    if ( chart == null Wink        throw new ArgumentNullException ( "chart required" Wink;      var scaleY = new NLinearScaleConfigurator ();    if ( scaleY == null Wink        throw new NullReferenceException ( "Failed to create y axis" Wink;     scaleY.MajorGridStyle.LineStyle.Pattern = LinePattern.Dash;    scaleY.MajorGridStyle.ShowAtWalls = new ChartWallType [] { ChartWallType.Back };    scaleY.InnerMajorTickStyle.Visible = false;     scaleY.LabelStyle.TextStyle.FontStyle.Style = FontStyle.Bold;    scaleY.LabelStyle.TextStyle.FontStyle.EmSize = new NLength ( DefaultFontSize, NGraphicsUnit.Point Wink;    scaleY.LabelStyle.TextStyle.FontStyle.Name = DefaultFontName;     chart.Axis ( StandardAxis.PrimaryY Wink.ScaleConfigurator = scaleY;      var scaleX = new NLinearScaleConfigurator ();    if ( scaleX == null Wink        throw new NullReferenceException ( "Failed to create x axis" Wink;      scaleX.MajorGridStyle.LineStyle.Pattern = LinePattern.Dash;    scaleX.MajorGridStyle.ShowAtWalls = new ChartWallType [] { ChartWallType.Back };    scaleX.InnerMajorTickStyle.Visible = false;     scaleX.LabelStyle.TextStyle.FontStyle.Style = FontStyle.Bold;    scaleX.LabelStyle.TextStyle.FontStyle.EmSize = new NLength ( DefaultFontSize, NGraphicsUnit.Point Wink;    scaleX.LabelStyle.TextStyle.FontStyle.Name = DefaultFontName;      chart.Axis ( StandardAxis.PrimaryX Wink.ScaleConfigurator = scaleX;}  public virtual void SetXAxisLabels ( NChart chart Wink{    if ( chart == null Wink        throw new ArgumentNullException ( "chart required" Wink;      // add scale to chart    // hide axis ruler, ticks and automatic labels    var scaleX = new NDateTimeScaleConfigurator ();    if ( scaleX == null Wink        throw new NullReferenceException ( "Failed to create x axis" Wink;     chart.Axis ( StandardAxis.PrimaryX Wink.ScaleConfigurator = scaleX;     scaleX.AutoLabels = false;    scaleX.UseOrigin = false;     scaleX.RulerStyle.BorderStyle.Width = new NLength ( 1 Wink;    scaleX.OuterMajorTickStyle.Length = new NLength ( 5 Wink;    scaleX.InnerMajorTickStyle.Length = new NLength ( 0 Wink;     scaleX.LabelStyle.TextStyle.FontStyle.Style = FontStyle.Bold;    scaleX.LabelStyle.TextStyle.FontStyle.EmSize = new NLength ( DefaultFontSize, NGraphicsUnit.Point Wink;    scaleX.LabelStyle.TextStyle.FontStyle.Name = DefaultFontName; }
With the Cancel its just one line. Can you add a code insert to the "+ Insert".
By Devin Ellis - 6 Years Ago
I have verified that the font style is not changed after the series are added to the chart but just on one chart I have different styles on the x axis:

https://www.nevron.com/forum/uploads/images/6ecf4f26-9275-4d2a-afaa-591e.png



https://www.nevron.com/forum/uploads/images/f644d373-2d75-4655-97db-f491.png

By Nevron Support - 6 Years Ago
Hi Devin.

The code that modifies the font style to bold looks ok however there may be other code that overrides the settings you have for the x axis as we tested with:

private void Form1_Load(object sender, EventArgs e)
{
NChart chart = nChartControl1.Charts[0];
chart.BoundsMode = BoundsMode.Stretch;
chart.Margins = new NMarginsL(10);
chart.DockMode = PanelDockMode.Top;
chart.Size = new NSizeL(new NLength(100, NRelativeUnit.ParentPercentage), new NLength(50, NRelativeUnit.ParentPercentage));
NBarSeries bar1 = new NBarSeries();
bar1.Values.Add(10);
bar1.Values.Add(20);
bar1.Values.Add(30);
chart.Series.Add(bar1);

SetupChartAxes(chart);


}

public virtual void SetupChartAxes(NChart chart)
{
if (chart == null)
throw new ArgumentNullException("chart required");
var scaleY = new NLinearScaleConfigurator();
if (scaleY == null)
throw new NullReferenceException("Failed to create y axis");
scaleY.MajorGridStyle.LineStyle.Pattern = LinePattern.Dash;
scaleY.MajorGridStyle.ShowAtWalls = new ChartWallType[] { ChartWallType.Back };
scaleY.InnerMajorTickStyle.Visible = false;
scaleY.LabelStyle.TextStyle.FontStyle.Style = FontStyle.Bold;
chart.Axis(StandardAxis.PrimaryY).ScaleConfigurator = scaleY;

var scaleX = new NLinearScaleConfigurator();
if (scaleX == null)
throw new NullReferenceException("Failed to create x axis");
scaleX.MajorGridStyle.LineStyle.Pattern = LinePattern.Dash;
scaleX.MajorGridStyle.ShowAtWalls = new ChartWallType[] { ChartWallType.Back };
scaleX.InnerMajorTickStyle.Visible = false;
scaleX.LabelStyle.TextStyle.FontStyle.Style = FontStyle.Bold;
chart.Axis(StandardAxis.PrimaryX).ScaleConfigurator = scaleX;
}
and the formatting was OK. Can you post a complete example which replicates the whole chart? (when posting you can first copy the code to notepad to remove any formatting and then copy the code from there).

By Nevron Support - 6 Years Ago
Hi Devin,
Please post sensitive code to support@nevron.com. We are not able to see what the problem is (as the code does not compile and does not replicate the problem). Our guess is that the chart uses staggering + auto scaling for the x axis to resolve label overlap which occurs on the x axis - you can check if this is the case if you disable label overlap resolve using:

NOrdinalScaleConfigurator scaleX = chart.Axis(StandardAxis.PrimaryX).ScaleConfigurator as NOrdinalScaleConfigurator;
scaleX.LabelFitModes = new LabelFitMode[0];

Hope this helps - let us know if the problem persists.