Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 次轴标签不工作?_C#_.net_Winforms_Graph_Charts - Fatal编程技术网

C# 次轴标签不工作?

C# 次轴标签不工作?,c#,.net,winforms,graph,charts,C#,.net,Winforms,Graph,Charts,好的,我在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(

好的,我在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);     
}
for(int i=0;i01)
set=0;
i++;
如果(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);
}
然而,由于某些原因,这跳过了几个月。。。岁月一点也没有出现

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

下面是我的代码的一个示例:


如您所见,标签的行为出人意料。我还想为这些日期显示一个较大的刻度线,并根据日期范围减少日期标签的数量,但我不知所措。以前有人做过类似的事情吗?

我最近在向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;

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

+1,感谢您提供chartraea.axix.LabelStyle.Format,我一生都找不到它;-)
chartArea.AxisX.LabelStyle.Format =  Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern;