iT邦幫忙

0

swift純手工打造折線圖--求對數刻度公式畫法

https://ithelp.ithome.com.tw/upload/images/20201102/20124536o3Y2briHib.png

https://ithelp.ithome.com.tw/upload/images/20201102/20124536VzfpcAMIVg.png

上面兩張圖是我預期達成

我希望軸上面有對數刻度

以下是我自己目前寫出最基本的等間隔刻度即呈現樣子

https://ithelp.ithome.com.tw/upload/images/20201102/20124536LOk2X6wIZx.png

https://ithelp.ithome.com.tw/upload/images/20201102/20124536f9JK9v01bs.png

有沒有哪位神人可以幫我

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
海綿寶寶
iT邦大神 1 級 ‧ 2020-11-03 20:58:05
最佳解答

第一組是 X軸刻度 的值
第二組是 螢幕上繪圖區域 X軸 的寬度
只要弄清楚兩組數列的轉換即可

以第一張圖為例
第一組(m)是 0.1,1,10,100,範圍是從 0.1...100,100 是 mMax
假設第二組(x)是 0,1,2,...,319,範圍是從 0...319,319 是 xMax
轉換公式為 x = m * (319 / 100) = m * (xMax / mMax)
如果你要對數刻度
就是 x = log(m) * (319 / log(100)) = log(m) * (xMax / log(mMax))

對應到你的程式
(xMax / mMax) 就是你的 zUnit
m 就是你的 CGFloat(i) * self.zInterval

你只要想辦法列出 m 的數值即可

tp6m60 iT邦新手 5 級 ‧ 2020-11-04 10:39:23 檢舉

非常感謝你 海綿寶寶大神
跪拜~

我要發表回答

立即登入回答