找回密码
 立即注册

QQ登录

只需一步,快速开始

rommyjob

高级会员

8

主题

19

帖子

1103

积分

高级会员

积分
1103

活字格认证

rommyjob
高级会员   /  发表于:2014-6-30 15:53  /   查看:5288  /  回复:1
我期望的效果:就是X轴显示日期时间,Y轴显示正整数,让图表表示数值随时间的变化情况。但是官方给定的Demo的X轴是数字,我写了个小例子,发现直接传DateTime类型的数组给C1Chart,但是图表并没有如期的被绘制。请问如何实现上述效果呢?

我写的小Demo的代码是:

1,创建一个winform程序(2.0的)
2,放置一个C1Chart,命名为offlineChart。
3,修改了ChartArea的AxisX的AnnoFormat为DateGeneral。
4,全部代码如下:


  1. using System;
  2. using System.Windows.Forms;
  3. using C1.Win.C1Chart;
  4. namespace WindowsFormsApplication1
  5. {
  6.     public partial class Form1 : Form
  7.     {
  8.         public Form1()
  9.         {
  10.             InitializeComponent();
  11.         }

  12.         ChartDataSeries cdsTemp;
  13.         DateTime[] x = new DateTime[100];
  14.         double[] y = new double[100];
  15.         private void Form1_Load(object sender, EventArgs e)
  16.         {
  17.             // Create chart series
  18.             offlineChart.ChartGroups[0].ChartData.SeriesList.Clear();
  19.             cdsTemp = offlineChart.ChartGroups[0].ChartData.SeriesList.AddNewSeries();

  20.             offlineChart.UseAntiAliasedGraphics = true;
  21.             offlineChart.UseAntiAliasedText = true;

  22.             for (int i = 0; i < 100; i++)
  23.             {
  24.                 x[i] = DateTime.Now.AddMinutes(1);
  25.                 y[i] = i;
  26.             }

  27.             // Copy data arrays into c1Chart
  28.             offlineChart.ChartArea.AxisX.Max = x.Length - 1;
  29.             offlineChart.ChartArea.AxisX.ScrollBar.Max = x.Length - 1;
  30.             cdsTemp.Y.CopyDataIn(y);
  31.             cdsTemp.X.CopyDataIn(x);

  32.         }
  33.     }
  34. }
复制代码

1 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2014-6-30 17:39:00
沙发
回复 1楼rommyjob的帖子

值注释是图表根据数据本身自动产生数字型注释时使用的.轴注释可以用于任何的轴,任何的图表类型,任何的数据布局.它是由轴的属性控制的.AnnoFormat 和AnnoFormatString这两个属性可以实现你的需求。只要设置AnnoFormat为Date类型的,或是自定义FormatString都可以实现。
中文文档如下:http://www.gcpowertools.com.cn/d ... !Documents/_146.htm


我测试了你的代码,代码里并没有设置AnnoFormat. 而且代码有小问题,我写了一段代码给你参考:
  1.    ChartDataSeriesCollection dscoll = c1Chart1.ChartGroups[0].ChartData.SeriesList;
  2.             dscoll.Clear();

  3.             ChartDataSeries cdsTemp  = dscoll.AddNewSeries();
  4.             cdsTemp.PointData.Length = 10;
  5.             for (int i = 0; i < 10; i++)
  6.             {
  7.                 cdsTemp.X[i] = DateTime.Today.AddMonths(i);
  8.                 cdsTemp.Y[i] = i * 2;
  9.             }
  10.             Axis ax = c1Chart1.ChartArea.AxisX;
  11.             ax.AnnoFormat = FormatEnum.DateLong;
  12.             ax.GridMajor.Visible = true;
复制代码
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部