2012-08-08 35 views
1

我想根据以下要求制作2D散点图;使用箭头代替“点”的二维散点图

  • “点”不应该是点,而应该是箭头指向上或下,这取决于它所表示的数据。
  • 应该可以指定在轴上显示的值。
  • 用户应该能够放大和平移图形。
  • 我希望能够指定每个箭头应具有的颜色。
  • 箭头应该是可点击的(即我需要某种方式来注册点击事件并决定点击哪个箭头)。

我试图用ZedGraph来实现这一点,但我发现很难得到我想要的,尤其是第一个要求。

是否有免费的图表库,可以让我在WinForms中做到这一点相对容易?或者,有关如何使用ZedGraph完成第一项要求的一般技巧?

回答

1

我现在已经了解到所有需求都可以使用ZedGraph完成。

“点”不应该是圆点,而应该是指向上或向下的箭头,这取决于它所表示的数据。

最干净的解决方案是使用LineItem并自定义符号类型,就像在这篇文章Customize symbol type of a ZedGraph LineItem中一样。

应该可以指定轴上显示的值。

一个简单的解决方案是使用TextLabels并手动将它们放在你想要的地方。

用户应该能够缩放和平移图形。

内置于ZedGraph中的功能。

我希望能够指定每个箭头应该具有的颜色。

可以为每种颜色创建多个LineItems,但需要该行本身不可见。

箭头应该是可点击的(即我需要某种方式来注册点击事件并决定点击哪个箭头)。

使用Click事件和FindNearestPoint方法很容易制作。

1

在Zedgraph示例中,有一个示例使用TextObj ects为数据点添加文本标签。你可以找到这个演示样本here

根据此示例,您应该能够使用ArrowObj ects而不是TextObj ects在所需位置创建向上和向下箭头。

+1

谢谢你的回答,它工作的很好!当向GraphObjList添加对象时,我注意到了一个奇怪的行为,当缩放或平移GraphObj(在我的情况下为ArrowObj's)时,会在实际图形区域外面结束(也可以参见本文中的相同类型的问题http:// stackoverflow。 com/questions/11795141/zedgraph-vertical-lines-with-lineobj-issue)。 – HischT 2012-08-09 09:57:40

+0

是的,我意识到这个解决方案主要适用于静态显示的图形。我没有检查,但也许你可以重写一些缩放/平移事件处理程序,并重新绘制你的图形对象?可能不切实际,但可能值得一试? – 2012-08-09 10:04:23

+1

我试图让它工作,但它根本不是一个干净的解决方案。我觉得这是更清洁的自定义符号类型像这篇文章http://stackoverflow.com/questions/11879915/customize-symbol-type-of-a-zedgraph-lineitem。感谢您在本文和链接文章中的帮助。 – HischT 2012-08-09 11:47:49