求助,关于zedgraph的问题

yang1216 2014-11-27 08:19:23
诸位大神。
我想用zedgraph画历史曲线,大概这么设置的。

var myPane = zedGraphControl1.GraphPane;
myPane.Title.Text = "历史曲线";
myPane.XAxis.Title.Text = "时间";
myPane.YAxis.Title.Text = "数值";
myPane.XAxis.Type = ZedGraph.AxisType.DateAsOrdinal;
myPane.XAxis.Scale.Format = "yyyy-MM-dd HH:mm:ss";
myPane.XAxis.Scale.MajorStepAuto = true;
zedGraphControl1.IsShowPointValues = true;
myPane.Fill = new Fill(Color.White, Color.LightYellow, 45.0f);
PointPairList lineList = new PointPairList();
curve = myPane.AddCurve("tag1", lineList, Color.Red, SymbolType.None);
IPointListEdit pList = curve.Points as IPointListEdit;
foreach(var record in records)
{
var value = record.Data[tagId];
double xTime = (double)new XDate(new DateTime(record.StartTime));
pList.Add(xTime, value);
}
然后确实能画出曲线来。不过遇到一个奇怪的问题。
首先,我故意设定不管用户怎么选择时间段,程序都只取1000条数据来画图。但是由时间段不同,显示的图形却大大不同。
大家看看:



请问,这是怎么回事呀?
...全文
281 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xian_wwq 2014-11-30
  • 打赏
  • 举报
回复
个人感觉问题出在AddCurve的数据源 lz检查下lineList, 每次添加Curve前,先清理下

myZed.GraphPane.CurveList.Clear();
myZed.GprahPane.GraphObjList.Clear();
yang1216 2014-11-30
  • 打赏
  • 举报
回复
有先clear. 我在画曲线之前有先clear pane private void buttonSearch_Click(object sender, EventArgs e) { var start = dateTimePickerStart.Value; var end = dateTimePickerEnd.Value; var lstTagId = lstTextBox.Select(p => p.Tag).OfType<int>().ToList(); var repository = new RecordRepository(); var lstRecord=repository.GetByTime(start, end,lstTagId); clearPane(); DrawCurve(lstRecord); } private void clearPane() { var myPane = zedGraphControl1.GraphPane; myPane.CurveList.Clear(); myPane.GraphObjList.Clear(); }
u010018424 2014-11-29
  • 打赏
  • 举报
回复
每次加数据清除上一次的数据了吗
yang1216 2014-11-28
  • 打赏
  • 举报
回复
应该不是数据问题,我断点看了,第二个图里的数据也是变化很大的。
liuyilin888 2014-11-28
  • 打赏
  • 举报
回复
WorldMobile 2014-11-28
  • 打赏
  • 举报
回复
引用 楼主 yang1216 的回复:
诸位大神。 我想用zedgraph画历史曲线,大概这么设置的。 var myPane = zedGraphControl1.GraphPane; myPane.Title.Text = "历史曲线"; myPane.XAxis.Title.Text = "时间"; myPane.YAxis.Title.Text = "数值"; myPane.XAxis.Type = ZedGraph.AxisType.DateAsOrdinal; myPane.XAxis.Scale.Format = "yyyy-MM-dd HH:mm:ss"; myPane.XAxis.Scale.MajorStepAuto = true; zedGraphControl1.IsShowPointValues = true; myPane.Fill = new Fill(Color.White, Color.LightYellow, 45.0f); PointPairList lineList = new PointPairList(); curve = myPane.AddCurve("tag1", lineList, Color.Red, SymbolType.None); IPointListEdit pList = curve.Points as IPointListEdit; foreach(var record in records) { var value = record.Data[tagId]; double xTime = (double)new XDate(new DateTime(record.StartTime)); pList.Add(xTime, value); } 然后确实能画出曲线来。不过遇到一个奇怪的问题。 首先,我故意设定不管用户怎么选择时间段,程序都只取1000条数据来画图。但是由时间段不同,显示的图形却大大不同。 大家看看: 请问,这是怎么回事呀?
应该是数据的问题吧
yang1216 2014-11-28
  • 打赏
  • 举报
回复
自己顶一下。
yang1216 2014-11-28
  • 打赏
  • 举报
回复
自己顶一下。

111,118

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧