현재 X 축의 월별 데이터와 Y 축의 정수 값을 표시하는 Windows 양식을 사용하여 차트를 표시하려고합니다.System.Windows.Forms.DataVisualization.Charting의 X 축에서 DateTime 범위를 어떻게 설정합니까?
var pnChart = new System.Windows.Forms.Panel();
pnChart.Controls.Clear();
DataTable dtChartData = myDatabaseLayer.BuildDataTable("SELECT Added, Modified FROM tblStatistics WHERE ApplicationID = " + intApplicationID + " ORDER BY MonthYear");
Chart chart = GenerateChart(dtChartData, pnChart.Width, pnChart.Height, "ActiveBorder", 6);
chart.Series[0].XValueType = ChartValueType.DateTime;
chart.ChartAreas[0].AxisX.LabelStyle.Format = "yyyy-MM-dd";
chart.ChartAreas[0].AxisX.Interval = 1;
chart.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Months;
chart.ChartAreas[0].AxisX.IntervalOffset = 1;
pnChart.Controls.Add(chart);
문제는 차트가 표시 될 때, X 축이 날짜 "1900-01-01"을 가지고 : 그러나, 나는 MonthYear이 날짜 시간 인 X 축, 제대로 범위를 설정하고 있지 않다 그래서 내 질문은 2013-01-01에 시작하는 기간을 어떻게 설정합니까?
나는 다음과 같은 설정을 인터넷을 검색하고 시도 있습니다,하지만 그들은 나에게 올바른 범위를 제공하지 마십시오 :
chart.ChartAreas[0].AxisX.Maximum = DateTime.Now.Ticks;
또는
chart.ChartAreas[0].AxisX.Crossing = DateTime.Now.Ticks;
또는를
chart.ChartAreas[0].AxisX.Minimum = DateTime.Now.Ticks;
TIA.
UPDATE : 내가 제대로 사용하여이 범위를 설정하는 방법을 찾을 수 있습니다 :
chart.Series[0].XValueType = ChartValueType.DateTime;
DateTime minDate = new DateTime(2013, 01, 01);
DateTime maxDate = DateTime.Now;
chart.ChartAreas[0].AxisX.Minimum = minDate.ToOADate();
chart.ChartAreas[0].AxisX.Maximum = maxDate.ToOADate();
위의 코드는 X 축 지금 적절한 범위를 설정; 그러나 이제는 차트 자체가 비어 있습니다.
업데이트 2 :
예, 당신에게 DasKrumelmonster 감사는 - 그게 고정! http://www.codeproject.com/Articles/168056/Windows-Charting-Application의 코드를 사용하고 있으며 작성자의 보호 된 내부 차트 GenerateChart (DataTable dtChartDataSource, int 너비, int 높이, 문자열 bgColor, int intType) 함수를 자세히 살펴 보았습니다. 이에
foreach (DataRow dr in dtChartDataSource.Rows)
{
double dataPoint = 0;
double.TryParse(dr[dc.ColumnName].ToString(), out dataPoint);
DataPoint objDataPoint = new DataPoint() { AxisLabel = "series", YValues = new double[] { dataPoint } };
chart.Series[series].Points.Add(dataPoint);
}
:
DateTime dtStart = new DateTime(2013, 01, 01);
int intMonthCounter = 0;
//Add data points to the series
foreach (DataRow dr in dtChartDataSource.Rows)
{
double dataPoint = 0;
double.TryParse(dr[dc.ColumnName].ToString(), out dataPoint);
DataPoint objDataPoint = new DataPoint() { AxisLabel = "series", YValues = new double[] { dataPoint } };
chart.Series[series].Points.AddXY(dtStart.AddMonths(intMonthCounter), dataPoint);
intMonthCounter++;
}
감사합니다이 문제를 해결하려면, 나는이 라인을 변경!
테스트를 위해 복사했습니다. 결과가 표시되지 않습니다. 차트 영역이 비어 있습니다. – C4u
흥미 롭습니다. 방금 다시 시도해 보니 저에게 효과적입니다. 1) 새 WindowsForms 프로젝트를 만듭니다. 2. 폼에 System.Windows.Forms.DataVisualization.Charting.Chart를 놓고 버튼을 두 번 클릭하여 이벤트 처리기를 만듭니다. 4) 위에서 코드를 삽입합니다. 5) 실행하고 즐기십시오. 최대 제한을 조정할 수 있습니다. –
하. 내가 시도한 방식대로. 스레드 작성자를 위해 일한 것처럼 나에게 특별한 문제인 것처럼 보입니다. 어쨌든, 나는 이것을 반대했다. 어떤 부분은 정말 도움이되었습니다. 지금 작업 코드가 있습니다. – C4u