我正在繪製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. 使用MATLAB攝像機校準器進行單鏡頭校準的問題
- 2. 從一些圖像重建3D而不進行校準?
- 3. 如何通過gml C++相機校準工具箱進行Kinect RGB和深度相機校準
- 4. 角度nvd3 MultiChart X軸雙Y軸校準問題
- 5. STM32F303 ADC卡在校準中
- 6. 圖像移動校準
- 7. 攝像機校準圖案
- 8. 校準PNG谷歌地圖
- 9. MATLAB估計未經校準的校準非確定性行爲
- 10. 如何將圖形中的軸相對於其他軸進行定位?
- 11. 在OpenCV和C++中使用有限的一組圖像進行攝像機校準
- 12. 如何將圖形軸變爲標準形式
- 13. 進度條校準與循環同步
- 14. Highcharts X軸校正
- 15. 校準Opencv
- 16. android GPS校準
- 17. 參數校準
- 18. Sphero API校準
- 19. 使用C進行圖形導航#
- 20. C#Excel.Chart條形圖軸單元問題
- 21. 更改圖形的x軸值c#
- 22. Excel條形圖顯示Y軸C#
- 23. R中的三軸圖形
- 24. 在MATLAB中使用rectifyStereoImages進行圖像校正
- 25. Python Pandas - 不對y軸上的條形圖值進行排序
- 26. 通過HTK進行力校準時發生錯誤
- 27. 使用OpenCV的solvePnP功能進行外部攝像機校準
- 28. 從一組2D-3D對應點進行相機校準
- 29. 使用OpenCV進行相機校準 - findChessboardCorners返回false
- 30. Opencv,讀取XML文件進行相機校準時出錯
同時,我剛剛閱讀了這條推文: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