我正在绘制2D图形中的一些浮点数据,并且需要将图形的轴校准为看起来整齐的小单元。显然这个单位根据数据的大小而变化。我试图找出一个很好的方法来将轴分成好看的数字。例如如果我的数据从 -1.3345到+5.882可能会以1.0或0.5为单位进行划分。如果我的数据从-100到800将坐标轴分为100或50的单位(我希望这很有意义),现在我将范围(最大值 - 最小值)除以某个固定整数,然后获得单位给我带有长尾数字的难看数字。有没有这样做的聪明方式?在C++中进行图形轴校准
回答
ACM Algorithm 463提供了三个简单的功能,以产生具有输出xminp,xmaxp和DIST的最小和的规模和在标尺刻度标记之间的距离最大值良好轴秤,给出n
间隔包括所述数据的请求点xmin
和xmax
:
Scale1()
给出的线性标尺与大约n
间隔和dist
为10倍1,2或5Scale2()
的整数次幂给出了一个线ar标度,间隔正好为n
(xminp和xmaxp之间的差距往往大于Scale1()
产生的差距)。Scale3()
给出了一个对数尺度。
该代码位于Fortran中,但解释并转换为其他语言非常简单。有更复杂的功能可以提供更漂亮的比例(例如gnuplot
中的那些),但Scale1很可能会用最少的代码为您完成这项工作。
(EDIT)
我发现,原来1973年论文在线here,它提供了比连接到上面的代码更多的解释文本。
这篇文章很好但是我不知道fortan 。猜猜我必须找到能翻译的人。谢谢。 – 2013-02-19 03:48:01
@da_elysian_fields。免费翻译器[f2c](www.netlib.org/f2c/)非常出色,可以将任何年份的Fortran翻译成C或C++。 – Simon 2013-02-19 19:08:05
计算好步骤的一种方法是找到该范围长度的最高有效位数值(即diff = maxVlaue - minValue
),并将其作为步骤使用。要计算价值的最显著位利用这个简单的公式:
pow(10, floor(log10(diff)))
这需要区别的十进制数,丢弃小数部分,如果有的话,并提出了十是对数的电源。如果差值为7.2165,则计算结果将返回1;对于721.65,它将返回100,依此类推。
这个计算的一个缺点是的网格步长为9.99,而diff
为1.001的网格步长是相同的。解决这个问题的一种方法是计算你为该步骤获得的网格线的数量,如果线数不足(例如少于三),则减少步骤十次。
我尝试了你建议的方法。我遇到了你指出的问题。这个建议非常明确,并且很容易遵循这个感谢。猜猜我应该尝试创建自己的函数来解决问题,谢谢 – 2013-02-19 03:51:33
- 1. 从一些图像重建3D而不进行校准?
- 2. 如何通过gml C++相机校准工具箱进行Kinect RGB和深度相机校准
- 3. 校准PNG谷歌地图
- 4. 如何将图形中的轴相对于其他轴进行定位?
- 5. 使用C进行图形导航#
- 6. android GPS校准
- 7. Sphero API校准
- 8. 校准Opencv
- 9. R中的三轴图形
- 10. 更改图形的x轴值c#
- 11. C#Excel.Chart条形图轴单元问题
- 12. Excel条形图显示Y轴C#
- 13. Python Pandas - 不对y轴上的条形图值进行排序
- 14. 我如何使用填充进行校准
- 15. 使用Swift 3和Xcode 8进行加速度计和校准
- 16. 如何使用angular2和离子2对3列进行校准
- 17. 使用OpenCV进行网络摄像头色彩校准
- 18. Opencv,读取XML文件进行相机校准时出错
- 19. 使用OpenCV进行相机校准 - findChessboardCorners返回false
- 20. 从一组2D-3D对应点进行相机校准
- 21. 如何使用图形在C++中进行移动
- 22. c#在PDF中创建图形并进行光栅化
- 23. 校正对准而在Java
- 24. WinCE中的屏幕校准
- 25. 在PyQT4中修改Matplotlib图形轴
- 26. jqplot重绘和重新校准轴和范围
- 27. 摄像机校准
- 28. RDLC报告比例图像校准
- 29. 投影仪校准的几何视图
- 30. 没有棋盘图像的3D校准?
同时,我刚刚阅读了这条推文:https://twitter.com/headinthebox/status/303588840180944896 – Johnsyweb 2013-02-19 02:18:53
看看[gnuplot](http://www.gnuplot.info)是如何做到的。 [Asymptote](http://asymptote.sourceforge.net)也可以绘制图表,这可能会更容易理解。 – vonbrand 2013-02-19 02:34:19