gpt4 book ai didi

c# - 辅助轴标签不起作用?

转载 作者:太空狗 更新时间:2023-10-29 20:34:45 25 4
gpt4 key购买 nike

好的,我在 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);
}

但是由于某种原因,这会跳过几个月……这些年根本不会出现。

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

这是我的代码的一个例子: enter image description here

如您所见,标签的行为异常。我还想为这些日期显示更大的刻度线,并根据日期范围减少日期标签的数量,但我不知所措。以前有人做过这种事吗?

最佳答案

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

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

chartArea.AxisX.LabelStyle.Format =  Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern;

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

关于c# - 辅助轴标签不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9321171/

25 4 0