日期:2014-05-20  浏览次数:21449 次

各位。。。帮帮忙啊!!!如何从数据库中读取数据显示成曲线图
是这样的我的数据库表中有一列叫做“平均值”,一列叫做“时间”
我想读取一段时间内的平均值和时间,在页面显示成一个横坐标为“时间”,纵坐标为“平均值”的曲线图,显示这段时间内的平均值走势

------解决方案--------------------
如果要你自己用GDI画坐标画曲线的话,太不值得.

用这个组件吧, 装微软的机器都有,

你搜索 MSChart 的资料, 和EXCEL里画图一样方便

-----我贴一点给你

MSChart应用描绘X,Y坐标点

在一个温度采集系统中,希望把采集来的各项温度值实时显示,用msChart控件绘制曲线走势图:
温度项用曲线表示; 横坐标为时间,纵坐标为温度值,均要求滚动显示;随着时间的增长,把采集来的温度显示出来,在每次采样完成后,刷新屏幕。
----------------------------------
代码很长!其实有好多都是系统自己加的,不过你们应该看的懂! 
经过很多次的测试没有一点问题! 
下面第一个问题如何加:AxMSChart20Lib到自己的C#系统上(很多人都问了,所以告诉大家很简单的) 
在[工具]->[添加/移出工具箱]->鼠标单击->选择[COM组件] 
找到Mcrosoft Chart Control 6.0(SP4)(oledb) 选中,然后[确定],你会发现你的工具箱里面有了一个这样的控件了!然后接着开始写代码! 

//设计原理,由于axMSChart1的数据是直接可以接受一个二为数组的, 
//所以我把事先读好的数据放到一个数组里 
//注意数据库对应二为数组,是这样的行是一位,列是二位; 
//所以我们看看就这样做 
//由于楼主提出以时间(第2列)为横坐标,压力(第4列)为纵坐标的曲线图 
//所以我们要把时间放在数组里的第一位,而压力放在第2位 
//因为在axMSChart里数组第一位代表横坐标 
//最后我们申明一个2纬数组,由于2纬数组一位代表行 
//所以我们可以用ds.Tables["newtb"].Rows.Count取得行的总数 
//而我们只要2列就可以了,所以我们是直接知道2纬数组的第2位的值,也就是2 
//最后也是最关键的,也就是axMSChart需要数组里的第一个值来描述坐标点的说明 (★经过HEDDA测试,此处放屁。第一行也是数据行 mschart 2.0)
//所以我们就要空出一个位的数组来做描述 
//因此数组真正的长度为ds.Tables["newtb"].Rows.Count+1 
Object[,] myay=new Object[ds.Tables["newtb"].Rows.Count+1,2]; 
myay[0,0]=(Object)"时间描述";//这里可以不用写什么 
myay[0,1]=(Object)"压力描述";//这里是描述坐标点的压力 
for(int i=1;i<=ds.Tables["newtb"].Rows.Count;i++) 

//这里是个重点,为什么要加上"["+"]" 
//其实这个axMSChart1玩意很有意识的,如果你的字符串是数字类型的描述 
//就算是字符串类型也不会当成横坐标哦!! 
//嘿嘿有意识把,本人曾经为了这个问题搞了几天的! 
myay[i,0]=(Object)"["+ds.Tables["newtb"].Rows[i-1]["st"].ToString()+"]"; 
myay[i,1]=(Object)ds.Tables["newtb"].Rows[i-1]["yl"].ToString(); 

//设计axMSChart1的数据 
axMSChart1.ChartData = myay; 
//设计图表的表头名称和对齐方式 
axMSChart1.Title.Text = "这里是一个图表"; 
axMSChart1.Legend.Location.LocationType = MSChart20Lib.VtChLocationType.VtChLocationTypeRight; 
axMSChart1.Legend.Location.Visible = true; 
//设计X轴名称 
axMSChart1.Plot.get_Axis(MSChart20Lib.VtChAxisId.VtChAxisIdX, null).AxisTitle.Text = "这里是时间描述"; 

//设计Y轴名称 
axMSChart1.Plot.get_Axis(MSChart20Lib.VtChAxisId.VtChAxisIdY, null).AxisTitle.Text = "这里是压力描述"; 
//设计图表形状的描述方式,是并图还是线图等等 
//axMSChart1.chartType = MSChart20Lib.VtChChartType.VtChChartType2dLine; 


数据结构型如:
//V-I
d[0,0] = "V"; d[0,1] = "I";
//---------------------------
d[1,0] = "0"; d[1,1] = "5";
d[2,0] = "1"; d[2,1] = "5";
d[3,0] = "2"; d[3,1] = "3";
d[4,0] = "3"; d[4,1] = "1";
d[5,0] = "4"; d[5,1] = "0";
------解决方案--------------------


如果是我 我会采用 webchart 或者 flot

具体应用 谷歌搜索 webchart 或者 flot

------解决方案--------------------
用webchart比较简单,csdn上就有下载
------解决方案--------------------