社区
图表区
帖子详情
难,怎样使用算法过滤图形的重叠点?
labthink
2011-12-16 09:39:37
我用MSChart,画一个折线图,现在的问题是:折线图中的数据太多(有的好几万个点),所以折线图上的点显示在屏幕上比较粗,我认为有很多重叠点造成的(可能数据不同,但是都集在一个像素中),现在想解决的是,怎么让数据少一些,折线图看上去还是一样的,谁能提供一个算法规则来过滤重叠数据?或者别的思路也可以,只要能够减少点数,并保持折线图的形状
...全文
125
16
打赏
收藏
难,怎样使用算法过滤图形的重叠点?
我用MSChart,画一个折线图,现在的问题是:折线图中的数据太多(有的好几万个点),所以折线图上的点显示在屏幕上比较粗,我认为有很多重叠点造成的(可能数据不同,但是都集在一个像素中),现在想解决的是,怎么让数据少一些,折线图看上去还是一样的,谁能提供一个算法规则来过滤重叠数据?或者别的思路也可以,只要能够减少点数,并保持折线图的形状
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
labthink
2011-12-16
打赏
举报
回复
[Quote=引用 8 楼 qwertxp 的回复:]
你在500px宽的图形上根据1000个点和根据100个构成的曲线图有多大区别?就算每个点只用1px,你也最多需要500个点,其它的都是废的。
确保每个坐标的点是唯一的,重复点没有意义。根据时间精度来取值,画一天的曲线图,根据需求考虑精确到每小时一个点,或者每半小时一个点,每10分钟一个点。精确到分钟,精确到秒是没有意义的,曲线图看的就是个趋势,看详细记录应该出报表。
[/Quote]是啊,哥们,不同的项目有不同的要求,当然这也和业务有关,有些就是需要精确到每一个点的。我这里也是需要精确的,我只是想要最前面的那个呈现肉眼看上去一样的效果
wonder_123
2011-12-16
打赏
举报
回复
[Quote=引用 8 楼 qwertxp 的回复:]
你在500px宽的图形上根据1000个点和根据100个构成的曲线图有多大区别?就算每个点只用1px,你也最多需要500个点,其它的都是废的。
确保每个坐标的点是唯一的,重复点没有意义。根据时间精度来取值,画一天的曲线图,根据需求考虑精确到每小时一个点,或者每半小时一个点,每10分钟一个点。精确到分钟,精确到秒是没有意义的,曲线图看的就是个趋势,看详细记录应该出报表。
[/Quote]
我的是用作数据分析的,要进行缩放获取每个具体点的信息的……
qwertxp
2011-12-16
打赏
举报
回复
你在500px宽的图形上根据1000个点和根据100个构成的曲线图有多大区别?就算每个点只用1px,你也最多需要500个点,其它的都是废的。
确保每个坐标的点是唯一的,重复点没有意义。根据时间精度来取值,画一天的曲线图,根据需求考虑精确到每小时一个点,或者每半小时一个点,每10分钟一个点。精确到分钟,精确到秒是没有意义的,曲线图看的就是个趋势,看详细记录应该出报表。
wonder_123
2011-12-16
打赏
举报
回复
恩啊。如果它内部是根据你全部导入的数据来确定范围,然后再进行绘制,并提供具体点的像素坐标,那也就没有意义了。从效率上看,teechart比 mschart高一些,3W左右的数据在teechart还是可以用的,mschart就估计够呛了。渲染画面越好的,绘图也越慢。
labthink
2011-12-16
打赏
举报
回复
[Quote=引用 5 楼 wonder_123 的回复:]
就是在绘图前,能不能先通过坐标转化得到该点将要显示的像素坐标? 如果没用提供,那就有点为难。
[/Quote]这个我还不太清楚,思路我倒是理解了,就是把同一像素点的数据只保留一份
wonder_123
2011-12-16
打赏
举报
回复
就是在绘图前,能不能先通过坐标转化得到该点将要显示的像素坐标? 如果没用提供,那就有点为难。
wonder_123
2011-12-16
打赏
举报
回复
这个我绘制的是 50W 到 100W 个点,但是是自己完全使用GDI+绘图。 如果没有使用反锯齿等渲染方式的话,GDI+图形绘制的基础都是基于像素,也就是整型坐标系。
我因为是自己定义的控件:就是在传入数据前就对数据进行了处理,把像素点重合的点踢掉了,这样绘图效率得以大大提升。不知道MSChart 在导出数据前能否得到数据的像素值? 只能提供这个思路,你再看看。
labthink
2011-12-16
打赏
举报
回复
那个重复点,作为数据来讲,基本上是不重复的,只是因为屏幕宽度有限,而数据点很多,导致可能有些点的大小我们眼睛可能看上去都一样
labthink
2011-12-16
打赏
举报
回复
自己顶
快溜
2011-12-16
打赏
举报
回复
chart控件绑定数据源的时候过滤掉重复点行不行
wonder_123
2011-12-16
打赏
举报
回复
回复了一次看不见?就再回复一次吧:
我定义控件时使用的思路:获取所有的数据-> 确定边界 -> 计算每个点对应的像素坐标 -> 绘制线条。
踢去点就是在确定边界并计算像素坐标时。
对于封装好的控件而言,一般都是传入点然后就将曲线绘制出来了,第三个过程不知道MSChart是否开放给了用户? 如果没有开放,直接在内部转化完了,就无法在绘制前得到像素坐标。
3w -10w 个点用 teechart 可以一试,用 mschart 太慢了。
wonder_123
2011-12-16
打赏
举报
回复
从原理上看,控件的内部实现也肯定是先获取数据,然后才会确定控件的逻辑值边界,再确定每个点的像素坐标的。
在自定义控件时采用的思路则为:先获取所有数据用于确定逻辑边界,然后再计算每个点的像素坐标,踢去重叠的点,再绘制非重合点序列。
估计这种封装好的控件不会提供这种功能。如果太慢,3W-10W 左右用teechart看看吧
labthink
2011-12-16
打赏
举报
回复
[Quote=引用 4 楼 wonder_123 的回复:]
这个我绘制的是 50W 到 100W 个点,但是是自己完全使用GDI+绘图。 如果没有使用反锯齿等渲染方式的话,GDI+图形绘制的基础都是基于像素,也就是整型坐标系。
我因为是自己定义的控件:就是在传入数据前就对数据进行了处理,把像素点重合的点踢掉了,这样绘图效率得以大大提升。不知道MSChart 在导出数据前能否得到数据的像素值? 只能提供这个思路,你再看看。
[/Quote],看了一下,好像没找到得到像素点的方法
labthink
2011-12-16
打赏
举报
回复
坐等知道的朋友
xiaosun830910
2011-12-16
打赏
举报
回复
晕,没人再说几句了吗
计算机
图形
算法
演示
计算机
图形
算法
演示,老师给的,挺好的
计算机
图形
学 简单绘图
计算机
图形
学 简单绘图 计算机
图形
学 简单绘图 计算机
图形
学 简单绘图
直线
重叠
去除
这是自己编的,我运行成功,大家可以试试,希望提出问题
图形
学试验
包含多个
图形
学的实验程序,绝对给力有用,适用于大学
图形
学课程的实验程序。
一种基于人工智能的
重叠
不规则非封闭体检测方法研究.pdf
一种基于人工智能的
重叠
不规则非封闭体检测方法研究.pdf
图表区
4,819
社区成员
14,134
社区内容
发帖
与我相关
我的任务
图表区
.NET技术 图表区
复制链接
扫一扫
分享
社区描述
.NET技术 图表区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章