C# 二维散点图,带箭头,而不是“X”;圆点;

C# 二维散点图,带箭头,而不是“X”;圆点;,c#,.net,data-visualization,zedgraph,scatter-plot,C#,.net,Data Visualization,Zedgraph,Scatter Plot,我想做一个有以下要求的二维散点图 “点”不应该是点,而是指向上或下的箭头,具体取决于它所代表的数据 应该可以指定要在轴上显示的值 用户应该能够缩放和平移图形 我希望能够指定每个箭头应有的颜色 箭头应该是可点击的(即,我需要某种方法来注册点击事件并确定点击了哪个箭头) 我曾尝试使用ZedGraph来实现这一点,但我发现很难达到我想要的效果,尤其是第一个要求 有没有一个免费的图表库可以让我在WinForms中相对轻松地完成这项工作?或者,关于如何使用ZedGraph实现第一个要求的一般提示?在Z

我想做一个有以下要求的二维散点图

  • “点”不应该是点,而是指向上或下的箭头,具体取决于它所代表的数据
  • 应该可以指定要在轴上显示的值
  • 用户应该能够缩放和平移图形
  • 我希望能够指定每个箭头应有的颜色
  • 箭头应该是可点击的(即,我需要某种方法来注册点击事件并确定点击了哪个箭头)
我曾尝试使用ZedGraph来实现这一点,但我发现很难达到我想要的效果,尤其是第一个要求


有没有一个免费的图表库可以让我在WinForms中相对轻松地完成这项工作?或者,关于如何使用ZedGraph实现第一个要求的一般提示?

在ZedGraph示例中,有一个使用
TextObj
ects向数据点添加文本标签的示例。您可以找到这个演示示例


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

我现在了解到,使用ZedGraph可以完成所有要求

“点”不应该是点,而是指向上或下的箭头,具体取决于它所代表的数据

最干净的解决方案是使用LineItem并像本文中那样自定义符号类型

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

一个简单的解决方法是使用文本标签,并手动将它们放置在您想要的位置

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

ZedGraph内置的功能

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

可以为每种颜色创建多个线条项目,但这要求线条本身不可见

箭头应该是可点击的(即,我需要某种方法来注册点击事件并确定点击了哪个箭头)


使用Click event和FindNearestPoint方法轻松制作。

感谢您的回答,效果非常好!我注意到在向GraphObj列表添加对象时出现了一种奇怪的行为,当缩放或平移GraphObj(在我的例子中是ArrowObj)时,结果超出了实际的图形区域(也请参阅这篇文章中的类似问题)。是的,我意识到这种解决方案主要适用于静态显示的图形。我还没有检查,但也许您可以覆盖一些缩放/平移事件处理程序,并在那里重新绘制图形对象?可能是不切实际的,但可能值得一试?我已经尝试让它工作,但它根本不是一个干净的解决方案。我觉得像在这篇文章中那样定制符号类型要干净得多。谢谢你在这篇文章和链接文章中的帮助。