在vs2010中使用chart控件时,x轴如果标签过多,运行时图表默认只能显示其中的一部分,如图:
我们可以通过设置,使得x轴标签全部显示:
1、通过chart控件属性,找到“ChartAreas集合”如图,并且点开
2、在ChartAreas1属性中找到“Axes集合”,并点开
3、左侧选中x轴“X axis”,在其右边属性“标签”下找到labelAutoFitStyle,将默认选择的全部删掉,此时为其属性为“none”;
将“LabelStyle”下标签间隔大小“Interval”从“Auto”改为“1” 。此时运行已完成x轴标签全部显示。
去掉x轴网格:chart属性->“ChartAreas集合”->“Axes集合”->“X axis”->“MajorGrid”将enable设为false即可。
确定保存修改。此时运行效果如下:
chart数据来源:
DataTable dsChart=WinGridControl.DataSource;
显示chart:
private void btnStatistics_Click(object sender, EventArgs e)
{
if (dsChart == null) return;
showChart(dsChart);
}
/// <summary>展示图表</summary>
private void showChart(DataSet ds)
{
chartData.Series[0].Points.Clear();
chartData.Series[1].Points.Clear();
if (FormAssistant.IsDsNull(ds)) return;
const double zeroMore = 0.1;
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
string type = ds.Tables[0].Rows[i]["ABA023"].ToString();
double ACA001 = SmartConvert.StringToDouble(ds.Tables[0].Rows[i][1].ToString());
if (ACA001.Equals(0.0D))
{//数值为0 加0.1 以便查看
ACA001 += zeroMore;
}
double NUM = SmartConvert.StringToDouble(ds.Tables[0].Rows[i][2].ToString());
if (NUM.Equals(0.0D))
{//数值为0 加0.1 以便查看
NUM += zeroMore;
}
chartData.Series[0].Points.AddXY(type, ACA001);
chartData.Series[1].Points.AddXY(type,NUM);
chartData.Series[0].IsValueShownAsLabel = true;
chartData.Series[1].IsValueShownAsLabel = true;
}
}