Разделите ось X графика в неделях в форме окна Visual Studio 2010
Я хочу показать данные года (2013-14) на моем графике и хочу разбить мою ось X за недели (около 52 столбцов) в Windows Form Visual Studio 2010. Пожалуйста, скажите мне, как установить это.
1 ответ
Код ниже
- заполняет чартовую серию одним очком в день для данного года
- устанавливает значения Y для случайного значения теста
- будет либо:
- показывать одну дату каждые 7 дней
- или показать номер недели для первого дня каждой недели
Обратите внимание: номер недели можно рассчитать различными способами, в зависимости от информации о культуре на вашем компьютере. Если вам нужно, вы всегда можете установить значения CalendarWeekRule
а также FirstDayOfWeek
к тем, кого вы на самом деле хотите.
using System.Windows.Forms.DataVisualization.Charting;
using System.Globalization;
private void setChart(int Year)
{
bool showAsDate = true;
var s = new Series(year.ToString() );
s.ChartType = SeriesChartType.Column;
var d = new DateTime(year, 01, 01);
int weekday = (int)d.DayOfWeek;
int maxDays = new DateTime(year, 12, 31).DayOfYear;
Random R = new Random();
for (int i = 0; i < maxDays ; i++)
{
s.Points.AddXY(d.AddDays(i), R.Next(100) - 50);
}
chart1.Series[0].Points.Clear();
chart1.Series.Clear();
chart1.Series.Add(s);
if (showAsDate )
{
chart1.Series[0].XValueType = ChartValueType.DateTime;
chart1.ChartAreas[0].AxisX.LabelStyle.Format = "MM-dd";
chart1.ChartAreas[0].AxisX.Interval = 7;
chart1.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Days;
chart1.ChartAreas[0].AxisX.IntervalOffset = 0;
}
else
{
DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo;
Calendar cal = dfi.Calendar;
for (int i = 0; i < maxDays ; i++)
{
chart1.Series[0].Points[i].AxisLabel =
cal.GetWeekOfYear(d.AddDays(i),
dfi.CalendarWeekRule, dfi.FirstDayOfWeek).ToString();
chart1.ChartAreas[0].AxisX.IntervalOffset = 2 - weekday;
}
}