Charts: ์ถ• ๋ ˆ์ด๋ธ” ๋ณต์ œ๋ฅผ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2015๋…„ 08์›” 24์ผ  ยท  51์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: danielgindi/Charts

์•ฑ ๋‚ด์—์„œ BarChartView ๋˜๋Š” LineChartView ์˜ ์™ผ์ชฝ ์ถ•์— ์žˆ๋Š” ๋ ˆ์ด๋ธ”์ด ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถ•์˜ ๋ ˆ์ด๋ธ” ์ˆ˜๊ฐ€ y ๋ฐ์ดํ„ฐ์˜ ์ตœ๋Œ€๊ฐ’์„ ์ดˆ๊ณผํ•˜์ง€ ์•Š๋„๋ก ๋จผ์ € ์•„๋ž˜ ์Šค๋‹ˆํŽซ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

self.chartView.leftAxis.labelCount = self.chartView.data.yMax > YAxisMaxLabelCount ? YAxisMaxLabelCount : self.chartView.data.yMax;

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด y ๋ฐ์ดํ„ฐ์˜ ์ตœ๋Œ€๊ฐ’์ด 3 ์ธ ๊ฒฝ์šฐ ์ถ• ๋‚ด์— 3 ๋ ˆ์ด๋ธ”๋งŒ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด์ œ ๊ทธ๋ž˜ํ”„๊ฐ€ ๋Œ€ํ™”ํ˜•์ด ์•„๋‹Œ ๊ฒฝ์šฐ(์ฆ‰, ์‚ฌ์šฉ์ž๊ฐ€ ์ฐจํŠธ๋ฅผ ํ™•๋Œ€/์ถ•์†Œํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ) ์ œ๋Œ€๋กœ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ํ™•๋Œ€/์ถ•์†Œํ•˜๋Š” ์ฆ‰์‹œ ๋ ˆ์ด๋ธ” ์ˆ˜๋Š” ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋˜๊ณ  ๊ฐ’ ํฌ๋งทํ„ฐ๋Š” ๊ฐ’์ด ๋ฐ˜๋ณต๋  ์ˆ˜ ์žˆ๋„๋ก ๊ฐ„๊ฒฉ์„ ์ฑ„์›๋‹ˆ๋‹ค.

_์ค‘๋ณต๋œ ๊ฐ’์ด ์—†๋Š” ์ถ•์˜ ์˜ˆ_
screen shot 2015-08-24 at 5 07 29 pm

_๊ฐ™์€ ์ฐจํŠธ์ด์ง€๋งŒ ํ™•๋Œ€ํ•œ ์˜ˆ_
screen shot 2015-08-24 at 5 07 54 pm

์Šคํฌ๋ฆฐ์ƒท์€ 2 ๊ฐ’์„ ๋ฐ˜๋ณตํ•˜๋Š” ์™ผ์ชฝ ์ถ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ด ๋ฐ˜๋ณต๋˜๋Š” ๋ ˆ์ด๋ธ” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์„ ์˜ ์ œ์•ˆ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋„์›€์„ ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•˜๋ฉด ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค.

๊ฐ์‚ฌ ํ•ด์š”

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ด๊ฒƒ์€ granularity ๊ธฐ๋Šฅ์œผ๋กœ 2.2.4์—์„œ ๋ฆด๋ฆฌ์Šค๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  51 ๋Œ“๊ธ€

์ค‘๋ณต๋œ ๋ ˆ์ด๋ธ”์ด ์•„๋‹Œ ๊ฒƒ ๊ฐ™์€๋ฐ 10์ง„์ˆ˜ ๊ฐ’๊ณผ ์ •์ˆ˜ ํฌ๋งทํ„ฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฐ x์ถ• ๋ ˆ์ด๋ธ”์˜ ์›์‹œ ๊ฐ’์ด ๋ฌด์—‡์ด๋ฉฐ y์ถ• ๋ Œ๋”๋Ÿฌ์—์„œ x์ถ• ๋ ˆ์ด๋ธ”์„ ๊ทธ๋ฆด ๋•Œ ํ˜•์‹์„ ์–ด๋–ป๊ฒŒ ์ง€์ •ํ•˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ๋ ˆ์ด๋ธ”์˜ ๊ฐ„๊ฒฉ์ด ํ•ญ์ƒ ์ „์ฒด ๊ฐ’์ธ์ง€ ํ™•์ธํ•˜๋Š” ๊ฒ€์‚ฌ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ChartYAxisRenderer ํด๋ž˜์Šค์˜ computeAxisValues() ํ•จ์ˆ˜ ๋‚ด์— ์žˆ์Šต๋‹ˆ๋‹ค.

var interval = ChartUtils.roundToNextSignificant(number: Double(rawInterval))
if(_yAxis.valueFormatter?.maximumFractionDigits == 0)
{
    interval = interval < 1 ? 1 : floor(interval)
}

๊ฐ’ ํฌ๋งทํ„ฐ๊ฐ€ ์†Œ์ˆ˜์  ์ดํ•˜ ์ž๋ฆฟ์ˆ˜๋ฅผ ์š”์ฒญํ•˜์ง€ ์•Š์œผ๋ฉด ๊ฐ„๊ฒฉ์ด ๋‚ด๋ฆผ์ฐจ์ˆœ์ด๊ณ  ์ •์ˆ˜๋ณด๋‹ค ์ž‘์œผ๋ฉด 1 ๊ฐ„๊ฒฉ์„ 1 ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์›ํ•˜์‹ญ๋‹ˆ๊นŒ?

๋‹น์‹ ์˜ ๋„์›€์„ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์‹ญ์ง„์ˆ˜ ๊ฐ’์ด ์žˆ๋Š” ๊ฒฝ์šฐ maximumFractionDigits๊ฐ€ 0์ธ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ํฌ๋งทํ„ฐ ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™์•„์š”.

๋‚˜๋Š” ์‹ญ์ง„์ˆ˜ ๊ฐ’์„ ์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ maximumFractionDigits = 0 ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

pal, ๊ท€ํ•˜์˜ ๋ฐ์ดํ„ฐ๋Š” 10 ์ง„์ˆ˜์ด๋ฉฐ ํฌ๋งทํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ„์ˆ˜ ์ž๋ฆฟ์ˆ˜๋ฅผ ๋ฒ„๋ฆฌ๊ณ  ์‹ถ์ง€๋งŒ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ์ •์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‚ด๊ฐ€ ์ฐจํŠธ์— ์ฃผ๋Š” y ๊ฐ’์€

(1, 3, 2, 0, 0, 7, 0)

ChartDataSet ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์ด ๊ฐ’์€ ๋‘ ๋ฐฐ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

ChartDataSet, label: , 7 entries:
ChartDataEntry, xIndex: 0, value 1.0
ChartDataEntry, xIndex: 1, value 3.0
ChartDataEntry, xIndex: 2, value 2.0
ChartDataEntry, xIndex: 3, value 0.0
ChartDataEntry, xIndex: 4, value 0.0
ChartDataEntry, xIndex: 5, value 7.0
ChartDataEntry, xIndex: 6, value 0.0

์ด๋Š” ChartDataEntry ํด๋ž˜์Šค๊ฐ€ ๊ฐ’์„ Double ๋กœ ๋ณด์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

/// the actual value (y axis)
public var value = Double(0.0)

๊ฐ’์ด ์ด์ค‘ ์ฐจํŠธ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์ง€๋งŒ ์ฒ˜์Œ์—๋Š” ๋ ˆ์ด๋ธ”์˜ ์˜ฌ๋ฐ”๋ฅธ ์ฆ๋ถ„์„ ํ‘œ์‹œํ•˜์ง€๋งŒ ์ฐจํŠธ๊ฐ€ ํ™•๋Œ€๋˜์ž๋งˆ์ž ChartYAxisRenderer ๋Š” ๊ฐ„๊ฒฉ์„ ์ฑ„์šฐ๊ณ  ์‹ถ์–ดํ•˜๋ฉฐ ๋‚ด ๊ฐ’ ํฌ๋งทํ„ฐ๊ฐ€ ๋ชจ๋“  ๋ ˆ์ด๋ธ”์„ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ค‘๋ณต๋œ ๊ฐ’์œผ๋กœ ํ‘œ์‹œ๋˜๋Š” ์†Œ์ˆ˜ ์ž๋ฆฟ์ˆ˜์ž…๋‹ˆ๋‹ค.

์ฐจํŠธ๊ฐ€ ์ •์ˆ˜์— ๋Œ€ํ•œ ๋ ˆ์ด๋ธ”๋งŒ ํ‘œ์‹œํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋ฏ€๋กœ ์ •์ˆ˜ ์‚ฌ์ด์— ์ถ”๊ฐ€ ๊ฐ’์„ ์›ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ฐจํŠธ์— ์˜ฌ๋ฐ”๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์ง€๋งŒ ์ฐจํŠธ๋Š” ๋‚ด๊ฐ€ ํ•˜๊ณ  ์‹ถ์€ ์ผ์„ ๊ฐ€์ •ํ•˜๊ณ  ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ๊ดœ์ฐฎ์ง€๋งŒ ์ถ•์— ์ •์ˆ˜๋งŒ ํ‘œ์‹œํ•˜๋Š” ์˜ต์…˜๋„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ’ ํฌ๋งทํ„ฐ์— ๋Œ€ํ•œ ๊ฒ€์‚ฌ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ด ๋™์ž‘์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ฐ’ ํฌ๋งทํ„ฐ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ด ๋™์ž‘์„ ์ œ๊ณตํ•˜๋Š” ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ ์ปค๋ฐ‹ a7e30dd16fbfaecb8e44c01ad8618a3a745fd101์—์„œ ์ฝ”๋“œ ๊ธฐ๋ฐ˜์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด Charts์˜ ์ตœ์‹  ์ปค๋ฐ‹์œผ๋กœ ๊ตฌํ˜„๋  ๋•Œ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์›ํ•˜๋Š” ํ–‰๋™์„ ๊ฐ€์žฅ ์ž˜ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์กฐ์–ธํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ์˜ˆ์ƒ๋˜๋Š” ํ–‰๋™์˜ gif๋ฅผ ์ฒจ๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜์—์„œ ๋™์ผํ•œ ๊ฐ’์„ ํ‘œ์‹œํ•˜๋Š” ๋ ˆ์ด๋ธ”์ด ์—†๊ณ  ๋ ˆ์ด๋ธ”์ด ์ „์ฒด ๊ฐ’์ด์–ด์•ผ ํ•œ๋‹ค๋Š” ์š”๊ตฌ ์‚ฌํ•ญ์ด ์žˆ์œผ๋ฏ€๋กœ ์ฐจํŠธ๊ฐ€ ๋‹ค๋ฅธ ๋ ˆ์ด๋ธ” ์‚ฌ์ด์— ๋ ˆ์ด๋ธ”์„ ๋ฐฐ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

chart

์•„ ์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด [3,4]๋กœ ํ™•๋Œ€/์ถ•์†Œํ•˜๋ฉด ๋ฒ”์œ„๋Š” [3,4]์ด๊ณ  ์ถ•์€ [3.0, 3.2, 3.4, 3.6, 3.8, 4.0]์„ ํ‘œ์‹œํ•˜๋ ค๊ณ  ํ•˜๋ฉฐ ์†Œ์ˆ˜ ์ž๋ฆฟ์ˆ˜๋Š” ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€?

๊ทธ๊ฒƒ์€ ์‹ค์ œ๋กœ ๋‚ด๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค... ๋ฐ์ดํ„ฐ๊ฐ€ ๋งค์šฐ ์ž‘๊ณ  ๊ฑฐ๊ธฐ์— 4-6๊ฐœ์˜ ๋ ˆ์ด๋ธ”์„ ํ‘œ์‹œํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—... ๋ฒ”์œ„๊ฐ€ [0,1]์ด๊ณ  5๊ฐœ์˜ ๋ ˆ์ด๋ธ”์„ ํ‘œ์‹œํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋ถ„์ˆ˜ ์ด์™ธ์˜ ์ˆซ์ž๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๊นŒ?

๋ฒ”์œ„๊ฐ€ ๋„ˆ๋ฌด ์ž‘์œผ๋ฉด ์†Œ์ˆ˜ ์ž๋ฆฟ์ˆ˜๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์ •๋ง๋กœ ์›ํ•˜์ง€ ์•Š์œผ๋ฉด ํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” showOnlyMinMaxEnabled ๋ผ๋Š” ์ตœ๋Œ€ ๋ฐ ์ตœ์†Œ ๋ ˆ์ด๋ธ”๋งŒ ํ‘œ์‹œํ•˜๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

BTW, ์Šคํฌ๋ฆฐ์ƒท์ด ์ž˜ ์ž‘๋™ํ•˜๊ณ  ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ ˆ์ด๋ธ” ์ˆ˜๋ฅผ ์ œํ•œํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์†์„ฑ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ์ถ•์ฒ™ ์ˆ˜์ค€์— ๋งž๊ฒŒ ์ˆ˜์ •ํ•˜๊ณ  ๋งž์ถœ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    public func setLabelCount(count: Int, force: Bool)
    {
        _labelCount = count

        if (_labelCount > 25)
        {
            _labelCount = 25
        }
        if (_labelCount < 2)
        {
            _labelCount = 2
        }

        forceLabelsEnabled = force
    }

Y์ถ•์—์„œ ๋™์ผํ•œ ๋™์ž‘์„ ํ•˜๋ ค๋ฉด Y ํ™•๋Œ€/์ถ•์†Œ ์ œํ•œ์„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. #382

388

@steprescott , #388์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๊นŒ?

๋ฌธ์ œ #388์— ๋Œ€ํ•œ ์ปค๋ฐ‹์„ ๋ณด๋ฉด ์œ ์ผํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๋ทฐํฌํŠธ์˜ ์ƒˆ ์†์„ฑ์ž…๋‹ˆ๋‹ค.

gif์— ํ‘œ์‹œ๋˜์ง€๋งŒ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๊ณผ ํ•จ๊ป˜ ์˜๋„ํ•œ ๋™์ž‘์„ ์–ป์œผ๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

@steprescott ์•ˆ๋…•ํ•˜์„ธ์š”, [_chartView.viewPortHandler setMaximumScaleY: 2.f]๋กœ ์‹œ๋„ํ•˜์‹ญ์‹œ์˜ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ด์™€ ๊ฐ™์ด ํ™•๋Œ€/์ถ•์†Œ์˜ ์„ธ๋ถ„์„ฑ์€ ๋ฐ˜๋ณต๋˜๋Š” ๊ฐ’์„ ํ‘œ์‹œํ•  ๋งŒํผ ํฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ข‹์€ ์˜ˆ๋Š” ์ œํ•œ์ด ์—†๋Š” ๊ฐ€๋กœ ๋ฌธ์ž ๋ผ์ธ์ด ์žˆ์„ ๋•Œ ํ™•๋Œ€/์ถ•์†Œ๊ฐ€ ํด ๋•Œ ๋ชจ๋“  Y ๊ฐ’์ด ๋ฐ˜๋ณต๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. MaximumScaleY๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด ๋ฐ˜๋ณต์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฌด์ œํ•œ:
screen shot 2015-09-22 at 23 29 16

์ œํ•œ 2f:
screen shot 2015-09-22 at 23 30 07

์•ˆ๋…•ํ•˜์„ธ์š” @noais

์ด๋Š” ๊ฐ’์˜ ๋ฒ”์œ„๊ฐ€ ๋” ํฐ ๋ฐ์ดํ„ฐ ์„ธํŠธ์—์„œ ์ž‘๋™ํ•˜์ง€๋งŒ ๊ฐ’์˜ ๋ฒ”์œ„๊ฐ€ ์ž‘์€ ๊ฒฝ์šฐ(์˜ˆ: ๊ฐ’ 0 - 7์˜ ๋ฐฐ์—ด) 2๋ฐฐ ํ™•๋Œ€ํ•˜๋ฉด ์ž ์žฌ์ ์œผ๋กœ ์ค‘๋ณต ๋ ˆ์ด๋ธ”์ด ์ œ๊ณต๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ™•๋Œ€/์ถ•์†Œ ๋น„์œจ์„ ์ œํ•œํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์ง€๋งŒ ์ „์ฒด ๊ฐ’์„ ๋ฐ˜๋ณตํ•˜๋Š” ๋ฌธ์ œ๋Š” ํ•ด๊ฒฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ปค๋ฐ‹ a7e30dd16fbfaecb8e44c01ad8618a3a745fd101์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ChartYAxisRenderer ํด๋ž˜์Šค๋ฅผ ํŽธ์ง‘ํ•  ๋•Œ ์˜ˆ์ƒํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๊ฐ’์„ ๋ฐ”๋‹ฅ์œผ๋กœ ํ•˜์—ฌ ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

var interval = ChartUtils.roundToNextSignificant(number: Double(rawInterval))
if(_yAxis.valueFormatter?.maximumFractionDigits == 0)
{
    interval = interval < 1 ? 1 : floor(interval)
}

์ด๊ฒƒ์ด ํšจ๊ณผ๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ(์ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ HEAD๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Œ) gif์— ํ‘œ์‹œ๋œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋ ˆ์ž„์›Œํฌ ๋‚ด์—์„œ ์ด๊ฒƒ์„ ๋ฐฐ์น˜ํ•˜๋Š” ๋” ์ข‹์€ ์œ„์น˜๋ฅผ ์—ฌ๋Ÿฌ๋ถ„์ด ์•Œ๊ฒŒ ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ถ•์— allowRepeatingValues BOOL ์†์„ฑ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์ด ๋” ์ž˜ ์•Œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋„ค ๋งž์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ•˜๋‚˜์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด์—ˆ์Šต๋‹ˆ๋‹ค. allowRepeatingValues์™€ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์‰ฌ์šด์ง€ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ€์žฅ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @noais ์™€ @liuxuan30์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์กฐ์‚ฌํ•  ๊ธฐํšŒ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๊นŒ? ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•„์š”ํ•œ ํšจ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ ์ด ์†์„ฑ์ด ํ”„๋ ˆ์ž„์›Œํฌ ๋‚ด์—์„œ ๊ฐ€์žฅ ์ข‹์€ ์œ„์น˜์— ์žˆ์–ด์•ผ ํ•˜๊ณ  ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์‹œ๊ฐ„ ๋‚ด ์ค˜์„œ ๊ณ ๋งˆ์›Œ.

๋‚˜๋Š” ์—ฌ์ „ํžˆ ๊ทธ๊ฒƒ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์•„๋‹ˆ๋ผ ์ž‘์€ ์ˆซ์ž๋กœ ๋ณต์ œ๋œ ๋ ˆ์ด๋ธ”์„ ์ƒ์„ฑํ•œ ํฌ๋งทํ„ฐ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํฌ๋งทํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋ฉด ์ˆซ์ž๊ฐ€ ์ œ๋Œ€๋กœ ํ‘œ์‹œ๋˜๊ฒ ์ฃ ?
๋‹น์‹ ์€ ๋‹น์‹ ์˜ ์ฝ”๋“œ๋กœ ๊ทธ๊ฒƒ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ทธ๊ฒƒ์ด ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ์ข‹์€ ๊ฒƒ์ธ์ง€ ํ™•์‹ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
@danielgindi ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•ด?

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„, allowRepeatingValues์— ํˆฌํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ˆซ์ž๊ฐ€ ์ ๊ณ  ์ค‘๋ณต๋œ y์ถ• ๊ฐ’์„ ํ‘œ์‹œํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚ด ๊ฐ’์ด ๋ชจ๋‘ 0์ด๋ฉด ์ด๋Ÿฌํ•œ ๋ฐ˜๋ณต ์ถ• ๋ ˆ์ด๋ธ”์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
chart

๋˜ํ•œ ๋‚ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ฝ”๋“œ ์กฐ๊ฐ์ด ํ•„์š”ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ ๋‹จ์ˆœํžˆ ์ •์ˆ˜๋งŒ ํ—ˆ์šฉํ•˜๋Š” ์ค‘๋ณต ๊ฐ’์„ ์ œ๊ฑฐํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ˆซ์ž ํฌ๋งทํ„ฐ์— ๋Œ€ํ•ด ํ™•์ธํ•˜๋Š” ๊ฒƒ์€ ์ด๊ฒƒ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋”์ฐํ•œ ๋ฐฉ๋ฒ•์ด ์•„๋‹™๋‹ˆ๋‹ค.

ํ•ด๋‹น ์Šค๋‹ˆํŽซ์ด ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ์ค‘๋ณต๋œ ๊ฐ’์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ๊ฐ’์ด 1.1, 1.2, 1.2, 1.3 ์ด๊ณ  ๋‹จ์ผ 10์ง„์ˆ˜๋ฅผ ์œ ์ง€ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์€ ์ด ๊ธฐ๋Šฅ์„ ์œ„ํ•œ ์ตœ์ƒ์˜ ์žฅ์†Œ์™€ ๊ตฌํ˜„์„ ์•Œ๊ฒŒ ๋  ๊ฒƒ์ด๋ฉฐ ์‚ฌ๋žŒ๋“ค์ด ํ”„๋ ˆ์ž„์›Œํฌ์˜ ํ˜„์žฌ ๋ฌธ์ œ๋ฅผ ์‚ดํŽด๋ณด๋Š” ๋ฐ ์‹œ๊ฐ„์„ ํ• ์• ํ•˜๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๋„ ์›ํ•˜๋Š” ์˜ต์…˜์ž„์„ ๋ณด์—ฌ์ฃผ๋Š” ํˆฌํ‘œ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ—ˆ์šฉ๋ฐ˜๋ณต๊ฐ’ :+1:

@noais @liuxuan30 ๋‚ด๊ฐ€ ์ œ์•ˆํ•œ ๊ฒƒ๋ณด๋‹ค ๋” ๋‚˜์€ ํ•ด๊ฒฐ์ฑ…์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ์˜ค, allowRepeatingValues๋ฅผ ์ œ์™ธํ•˜๊ณ  .. ์›๋ž˜ ๋ฌธ์ œ๋Š” ํฌ๋งทํ„ฐ์— ๊ด€ํ•œ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ˆ˜์ค€์—์„œ ์‹ญ์ง„์ˆ˜๋ฅผ ์›ํ•˜์ง€ ์•Š์ง€๋งŒ ๋ฐ์ดํ„ฐ์—๋Š” ์‹ค์ œ๋กœ ๋‹ค์Œ ์ˆ˜์ค€์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ƒ์ ์œผ๋กœ๋Š” ๊ทธ๋ž˜ํ”„์— ๋ฐ˜๋ณต๋˜๋Š” ๊ฐ’์ด ํ‘œ์‹œ๋˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค! ๋ฐ˜๋ณต๋˜๋Š” ๊ฐ’์ด ์ผ๋ถ€ ๋…ผ๋ฆฌ๋กœ ์ˆจ๊ฒจ์ ธ ๊ณ ์œ ํ•œ ๊ฐ’๋งŒ ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@vigyanhoon ๊ฐ’์„ '๋ฐ˜๋ณต'ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ฐ’์„ '๋ฐ˜๋ณต'ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ํฌ๋งทํ„ฐ์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋ณต์„ ์›ํ•˜์ง€ ์•Š์œผ๋ฉด ์‹ญ์ง„์ˆ˜ ํฌ๋งทํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@liuxuan30 "_10์ง„์ˆ˜ ํฌ๋งทํ„ฐ ์ œ๊ณต_"์ด ๋ฌด์Šจ ๋œป์ธ์ง€ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๋‚ด ๋ฐ์ดํ„ฐ๋กœ maximumFractionDigits = 0 ๋ฅผ ์„ค์ •ํ•˜๋Š” ํฌ๋งทํ„ฐ๋ฅผ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ ๊ฒฐ๊ณผ๋ฅผ ์–ป๋Š” ๋ฐฉ๋ฒ•์„ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ 8์›” 28์ผ์— ์˜ฌ๋ฆฐ ์ œ gif์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์ฃผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์ฐจํŠธ๋ฅผ ์ œ์ž‘ํ•  ์ˆ˜ ์žˆ์—ˆ๋‚˜์š”?

numberFormatter.allowsFloats = NO๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ๋„์›€์ด ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ์ค‘๋ณต๋œ INT๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๊นŒ?! ๋ฐ˜๋ณต ๊ฐ’์„ ํ‘œ์‹œํ•˜์ง€ ์•Š๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ xAxis(์ƒ๋‹จ/ํ•˜๋‹จ)์— 2๊ฐœ์˜ ๋ ˆ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@steprescott ํ™•์‹คํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. MaximumFractionDigits ๋Š” 0์ด ์•„๋‹ˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ •์ˆ˜ ๋ถ€๋ถ„๋งŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ๋ฒ”์œ„๊ฐ€ ์ž‘๊ณ  5~6๊ฐœ์˜ ๋ ˆ์ด๋ธ”์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ maximumFractionDigits = 0์„ ์ง€์ •ํ•˜๋ฉด ๊ฐ’์ด ๋ฐ˜๋ณต๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ๋ฒ”์œ„๊ฐ€ [0,2]์ด๊ณ  5๊ฐœ์˜ ๋ ˆ์ด๋ธ”(0, 0.4,0.8,1.2,1.6, 2.0)์„ ํ‘œ์‹œํ•ด์•ผ ํ•˜๋Š”์ง€ ์ƒ๊ฐํ•ด ๋ณด์„ธ์š”. maximumFractionDigits = 0์„ ์ ์šฉํ•˜๋ฉด ์•„๋งˆ๋„ 0, 0, 1, 1, 2, 2๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@injectios , MaximumFractionDigits = 2 ๋˜๋Š” 4๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

์•ˆ๋…• ๋ชจ๋‘๋“ค!
๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@liuxuan30 ๋ฐ์ดํ„ฐ ์œ ํ˜•์— ๋”ฐ๋ผ ์†Œ์ˆ˜๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ธ๊ฐ„ ์ฐจํŠธ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ 1.5๋ช…์˜ ์ธ๊ฐ„์€ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. 1 ๋˜๋Š” 2์ž…๋‹ˆ๋‹ค.

@jpros ๋‹น์‹ ์€ ์š”์ ์„ ์–ป์—ˆ์ง€๋งŒ ์ˆ˜ํ•™ ์š”์ ์—์„œ ์šฐ๋ฆฌ๋Š” [0,2] ๋ฒ”์œ„์—์„œ ์†Œ์ˆ˜์  ์—†์ด 4๊ฐœ์˜ ๋ ˆ์ด๋ธ”์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ํ˜„์žฌ๋กœ์„œ๋Š” ๊ฐ’์ด ๋ฐ˜๋ณต๋˜์ง€ ์•Š๋„๋ก yAxis.showOnlyMinMaxEnabled ๋ฅผ ์ผœ๊ฑฐ๋‚˜,
๋˜๋Š” ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ChartYAxisRenderer.computeAxis ์—์„œ ์ž์‹ ์˜ ๊ฐ’์„ ๊ณ„์‚ฐํ•˜๋Š” ๋…ผ๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
๋˜๋Š” 'allowRepeatValues' ๊ธฐ๋Šฅ์„ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@PhilJay ํ˜„์žฌ ์ด์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์ด ์žˆ์Šต๋‹ˆ๊นŒ? :-)

Android(๋ฐ ofc iOS) POV์—์„œ ๋‹ค์Œ ์ค„: https://github.com/PhilJay/MPAndroidChart/blob/master/MPChartLib/src/com/github/mikephil/charting/renderer/YAxisRenderer.java#L108

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์œ„์น˜๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถ• ๋ ˆ์ด๋ธ”์˜ float interval ๊ฐ€ ๊ณ„์‚ฐ๋˜์–ด ์žˆ์œผ๋ฉฐ ๋‘ ๋ ˆ์ด๋ธ”์˜ ํ˜•์‹์ด ๋™์ผํ•˜๊ฒŒ ์ง€์ •๋˜๋Š” ๊ฒฝ์šฐ ๋ ˆ์ด๋ธ”์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๋ณ€๊ฒฝ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ธ‰ํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๋ฉด ๋”ฑ ๋– ์˜ค๋ฅด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•ด?

์ตœ๋Œ€ ๊ฐ’์„ ์„ค์ •ํ•˜์—ฌ ์ค‘๋ณต์„ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.

leftAxis.customAxisMax = maxYLabelCount

@vigyanhoon ๊ทธ๊ฒƒ์€ ์™„์ „ํžˆ ๋‹ค๋ฅธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ’์€ ์ˆ˜๋ฐฑ๋งŒ์ด ๋  ์ˆ˜ ์žˆ์ง€๋งŒ maxYLabelCount๋Š” ๊ทธ๋Ÿด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. customAxisMax๋Š” ์ถ• ๋ฒ”์œ„๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๊ฐ’์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ Œ๋”๋ง ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด +1. ๋‚˜๋Š” ๋˜ํ•œ ์‚ฌ๋žŒ์˜ ๊ทธ๋ž˜ํ”„๊ฐ€ ์žˆ๊ณ  [0, 0, 1, 1, 2, 2]๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. numberFormatter.maximumFractionDigits ๋ฅผ 0์ด ์•„๋‹Œ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

@steprescott ์ด ์ œ์•ˆํ•œ ๋‹ค์Œ ์ฝ”๋“œ๋„ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ๋‚ด ํฌํฌ์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

https://github.com/natanrolnik/ios-charts/commit/01df4d9264e0adbef4db88763075376f4a0f255c

PR์ด ์ด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? @danielgindi @liuxuan30 @steprescott ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์„ธ์š”? ์ด ์ฝ”๋“œ๋กœ ํ•ด๊ฒฐ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ๋” ๋‚˜์€ ์†”๋ฃจ์…˜์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@natanrolnik ์‚ฌ์šฉ์ž๊ฐ€ ํ™•๋Œ€ํ•˜๊ณ  ๋ฒ”์œ„๊ฐ€ [25.2, 25.3]์ด ๋œ๋‹ค๋ฉด? ๊ฐ„๊ฒฉ์€ 1.0์ด๊ณ  0.02์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ž๊ฐ€ ์ตœ๋Œ€ ๋ถ„์ˆ˜ ์ˆ˜๋ฅผ 0์œผ๋กœ ๊ตฌ์ฒด์ ์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ„๊ฒฉ์„ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์Œ์ˆ˜ ๊ฐ’์„ ํ…Œ์ŠคํŠธํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
์•„์ง ๋” ๋‚˜์€ ์†”๋ฃจ์…˜์ด ์—†์ง€๋งŒ 'allowRepeatValues'์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์ด ์ƒ๊ฐ๋‚˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

allowRepeatedValues ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค!

@steprescott ์ด ์ข‹์€ ์†”๋ฃจ์…˜์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ฐ’ 1์„ ์„ธ๋ถ„์„ฑ ๋ณ€์ˆ˜๋กœ ์กฐ์ •ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ด @liuxuan30 ๋ฌธ์ œ๋Š” ๋” ์ด์ƒ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ์ฝ”๋“œ๋ฅผ ChartYAxisRenderer์˜ 75ํ–‰์— ๋„ฃ์œผ๋ฉด:

interval = interval < granuality ? granuality : interval       

https://github.com/noais/ios-charts/compare/master...๋…ธ์•„์ด์Šค
์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•ด?

์ž, ์ด์ œ ๋‹ซํ˜”์ง€๋งŒ ๋งˆ์Šคํ„ฐ์— ๋ณ‘ํ•ฉ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์–ธ์ œ ์ด๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ granularity ๊ธฐ๋Šฅ์œผ๋กœ 2.2.4์—์„œ ๋ฆด๋ฆฌ์Šค๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ์—ฌ๊ธฐ์— ๊ฒŒ์‹œํ•ด์•ผ ํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ๋‚˜์—๊ฒŒ๋Š” ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด xAxis ๋ ˆ์ด๋ธ”๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„์— ๋Œ€ํ•œ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์‚ฌ์šฉ์ž ์ง€์ • IAxisValueFormatter๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ์ฐจํŠธ์˜ ๊ฒฝ์šฐ "22:00", "23:00", "์›”", "๋ชฉ"๊ณผ ๊ฐ™์€ ์š”์ผ๊ณผ ๊ฐ™์€ ์‹œ๊ฐ„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋‚จ์„ ์œ„ํ•ด ๋“ฑ๋“ฑ..

์ฐจํŠธ๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ํ™•๋Œ€ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐ’์ด ๋ณต์ œ๋˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

Screenshot 2019-07-19 at 17 59 11

์ด ๊ฒฝ์šฐ granularity ๊ธฐ๋Šฅ์€ ์ˆซ์ž์˜ ์ฐจ์ด๋กœ ์ž‘๋™ํ•˜๋ฏ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ ๋ ˆ์ด๋ธ”์ด ๋ฐ˜๋ณต๋˜๋Š” ๊ฒƒ์„ ๋ง‰์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฐ์‚ฌ ํ•ด์š”

granularityEnabled๋ฅผ false๋กœ ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค.
leftAxis.granularityEnabled = true

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„, ํ™•๋Œ€ํ•  ๋•Œ xAxis ๊ฐ’์ด ๋ฐ˜๋ณต๋˜์ง€ ์•Š๋„๋ก ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
๋‚ด ํฌ๋งทํ„ฐ:
func stringForValue(_ ๊ฐ’: Double, ์ถ•: AxisBase?) -> ๋ฌธ์ž์—ด {
๋‚ ์งœ = ๋‚ ์งœ(timeIntervalSince1970: ๊ฐ’)
๋ฐ˜ํ™˜ date.formattedString(withDateFormat: .daymonth)
}
๋˜ํ•œ ์„ธ๋ถ„ํ™”๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
xAxis.granularity = 1.0
xAxis.granularityEnabled = true

๋ˆ„๊ตฌ๋“ ์ง€ plz๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@์•„์ด๋ฉ•
๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค, ๋‹น์‹ ์€ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์•˜์Šต๋‹ˆ๊นŒ?

x์ถ• ๋ ˆ์ด๋ธ” ์ˆ˜๋ฅผ ๊ฐ•์ œ๋กœ ์ ์šฉํ•˜๊ณ  ๋ช‡ ๊ฐ€์ง€ ์ ์„ ํ‘œ์‹œํ•  ๋•Œ๋„ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

newbiebie picture newbiebie  ยท  3์ฝ”๋ฉ˜ํŠธ

valeIT picture valeIT  ยท  3์ฝ”๋ฉ˜ํŠธ

kirti0525 picture kirti0525  ยท  3์ฝ”๋ฉ˜ํŠธ

Shunshine07 picture Shunshine07  ยท  3์ฝ”๋ฉ˜ํŠธ

coop44483 picture coop44483  ยท  3์ฝ”๋ฉ˜ํŠธ