c# 怎么画两组数据的曲线图 10

两组数据,x[100]={0,1,2,3,4,……},y[100]={……}。x轴:角度。y轴:值。Y值有正有负,excel画出来是一条比较光滑的曲线。... 两组数据,x[100]={0,1,2,3,4,……},y[100]={……}。x轴:角度。y轴:值。Y值有正有负,excel画出来是一条比较光滑的曲线。 展开
 我来答
zhouxiang_1216
2014-02-25 · TA获得超过2591个赞
知道大有可为答主
回答量:1286
采纳率:33%
帮助的人:1381万
展开全部

拖一个Chart控件上去,通过属性设置图表类型,如果不熟悉也可以使用下面这个代码:

this.chart1.Series[0].ChartType = SeriesChartType.Spline;

然后就是将数据绑定上去了,直接使用你的两个数组,一句代码完工:

this.chart1.Series[0].Points.DataBindXY(x,y);

生成的图表大致是这个样子:

希望对你有帮助,有疑问请追问或是Hi

启东德乐润滑
推荐于2016-02-22 · TA获得超过1.3万个赞
知道大有可为答主
回答量:2337
采纳率:80%
帮助的人:424万
展开全部
C#.NET 2003结合dundas组件实现
曲线实现核心代码,以前也用vml整理过

private void view_duns()//by wyw308将右边listbox的项目显示成曲线
{
Chart1.Series.Clear();
Chart1.Legends["Default"].Docking=LegendDocking.Bottom;
Chart1.ChartAreas["Default"].AxisX.IntervalAutoMode = IntervalAutoMode.VariableCount; //by wyw308网格粗细
int m_count=lst_view.Items.Count;
// foreach(ListItem itmsel in lst_view.Items)//by wyw308循环组件的方式,不好
for(int i=0;i<m_count;i++)
{
// add_ser(Chart1,itmsel.Value,itmsel.Text);
add_ser(Chart1,lst_view.Items[i].Value,lst_view.Items[i].Text);//by wyw308添加serries
if(ckb_v.Checked)//by wyw308是否多y轴显示
{
// Set custom chart area position
Chart1.ChartAreas["Default"].Position = new ElementPosition(20,10,68,82);
Chart1.ChartAreas["Default"].InnerPlotPosition = new ElementPosition(5,0,90,75);
// Create extra Y axis for second and third series
// CreateYAxis(Chart1, Chart1.ChartAreas["Default"], Chart1.Series[name], 7+i*5, 8);
if(i>0)
CreateYAxis(Chart1, Chart1.ChartAreas["Default"],Chart1.Series[lst_view.Items[i].Text],8+(20-8)*i/m_count,9); //by wyw308动态显示Y轴位置
}
}
}
private void add_ser(Dundas.Charting.WebControl.Chart ds_chart,string code,string name)//by wyw308添加曲线的series
{
string dt_1=dtp_s.Value.ToString("yyyy-MM-dd").Replace("-","");
string dt_2=dtp_e.Value.ToString("yyyy-MM-dd").Replace("-","");
string sql="Select "+
" t1.NAME 指标名称,t1.UNIT 单位,t1.CODE 指标代码,"+
" t2.NOW_VALUE 日值,"+
// " to_char(t2.INCEPT_DATE,'mm-dd') 接收日期"+
" to_char(t2.INCEPT_DATE,'mm-dd') 接收日期"+
" From sts_dtarget t1,sts_dayvalues t2"+
" Where to_char(t2.INCEPT_DATE,'yyyymmdd')>='"+dt_1+"' And to_char(t2.INCEPT_DATE,'yyyymmdd')<='"+dt_2+"'And t2.CODE='"+code+"' And t1.code=t2.code order by t2.INCEPT_DATE";
MyOraComm.ConnForOracle cfo=new MyOraComm.ConnForOracle("dbf_connstr");
DataSet ds=cfo.ReturnDataSet(sql,"ser");
ds_chart.Series.Add(name);
ds_chart.Series[name].Type = SeriesChartType.Line;
for(int i=0;i<ds.Tables[0].Rows.Count;i++)
{
ds_chart.Series[name].Points.AddXY(ds.Tables[0].Rows[i]["接收日期"],ds.Tables[0].Rows[i]["日值"]);
// ds_chart.Series[name].Points.AddXY(DateTime.Parse(ds.Tables[0].Rows[i]["接收日期"].ToString()),ds.Tables[0].Rows[i]["日值"]);
// ds_chart.Series[name].Points.AddY(ds.Tables[0].Rows[i]["日值"]);
ds_chart.Series[name].ToolTip = "#SERIESNAME\nX:#AXISLABEL\nY:#VALY";//by wyw308显示提示信息
// ds_chart.ChartAreas["Default"].AxisX.LabelStyle.Format = "ddd";//by wyw308格式化数据,没效果
// ds_chart.ChartAreas["Default"].AxisX.LabelStyle.ShowEndLabels = false;

}
cfo.CloseConn();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
denveryang3633
2014-02-25 · TA获得超过266个赞
知道小有建树答主
回答量:342
采纳率:0%
帮助的人:156万
展开全部
把函数公式贴出来看看呗
更多追问追答
追问
公式很复杂,两组数据没有必然联系。
追答
winform还是webform,还是说跟这个没关系只是想要个思路?
简单的做法是用Graphic构建绘画对象来画曲线用于画线定位的点越多画出来的曲线越光滑
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-02-25
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式