辅助轴标签不起作用?

7 .net c# charts graph winforms

好的,所以我在MSChart上有一个日期时间的x轴.我想在每个月的第一个月以下绘制数月,并且比一年的变化低几年.这是我到目前为止所拥有的:

for (int i = 0; i < rdate.Length -1 ; i++)
{
    if (rdate[i].Day == 01 && set == 0)

    chart1.ChartAreas[0].AxisX.CustomLabels.Add(
       rdate[i].AddDays(-20).ToOADate(), rdate[i].AddDays(20).ToOADate(), 
       Convert.ToString(rdate[i].ToString("MMMM")), 1, LabelMarkStyle.None);
    set = 1;

    if (rdate[i].Day > 01) 
    set = 0;

    i++;

    if (rdate[i].Year > rdate[i-1].Year)

    chart1.ChartAreas[0].AxisX.CustomLabels.Add(
       rdate[i].AddDays(-20).ToOADate(), rdate[i].AddDays(20).ToOADate(), 
       Convert.ToString(rdate[i].ToString("yyyy")), 2, LabelMarkStyle.None);     
}
Run Code Online (Sandbox Code Playgroud)

然而由于某些原因,这会跳过几个月......这些年根本没有出现.

rdate是用于填充x轴的日期时间数组.

这是我的代码所做的一个例子: 在此输入图像描述

如您所见,标签表现出乎意料.我还想为这些日期显示更大的刻度,并根据日期范围减少日标签的数量,但我不知所措.以前有人做过这种事吗?

Phi*_*rie 3

最近,当我向 x 轴添加太多标签时,我在 MSChart 中遇到了类似的问题。解决方案是减少滴答数而不丢失数据。

这种方法对我有用,但您必须根据您的具体需求进行调整。

dataSeries.XValueType = ChartValueType.Auto;

dataSeries.Points.AddXY(record.DateTime, value);

然后,我确定给定数据的最小和最大日期以确定首选间隔,您的实现会有所不同:

var totalDays = (maxDate.Value - minDate.Value).TotalDays;

if (totalDays < 60)
    chartArea.AxisX.IntervalType = DateTimeIntervalType.Days;
else if (totalDays < 120)
    chartArea.AxisX.IntervalType = DateTimeIntervalType.Weeks;
else
    chartArea.AxisX.IntervalType = DateTimeIntervalType.Months;
Run Code Online (Sandbox Code Playgroud)

指定 AxisX 标签格式:在您的情况下,您可能必须更改 AxisX 标签格式Format和间隔。

chartArea.AxisX.LabelStyle.Format =  Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern;
Run Code Online (Sandbox Code Playgroud)

希望有一些关键部分能为您提供价值,但您仍然需要根据您的特定需求对其进行修改。