์ฑ ๋ด์์ BarChartView
๋๋ LineChartView
์ ์ผ์ชฝ ์ถ์ ์๋ ๋ ์ด๋ธ์ด ๋ฐ๋ณต๋๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์ถ์ ๋ ์ด๋ธ ์๊ฐ y ๋ฐ์ดํฐ์ ์ต๋๊ฐ์ ์ด๊ณผํ์ง ์๋๋ก ๋จผ์ ์๋ ์ค๋ํซ์ ์ถ๊ฐํ์ต๋๋ค.
self.chartView.leftAxis.labelCount = self.chartView.data.yMax > YAxisMaxLabelCount ? YAxisMaxLabelCount : self.chartView.data.yMax;
์ด๋ ๊ฒ ํ๋ฉด y ๋ฐ์ดํฐ์ ์ต๋๊ฐ์ด 3
์ธ ๊ฒฝ์ฐ ์ถ ๋ด์ 3
๋ ์ด๋ธ๋ง ์๊ฒ ๋ฉ๋๋ค. ์ด์ ๊ทธ๋ํ๊ฐ ๋ํํ์ด ์๋ ๊ฒฝ์ฐ(์ฆ, ์ฌ์ฉ์๊ฐ ์ฐจํธ๋ฅผ ํ๋/์ถ์ํ ์ ์๋ ๊ฒฝ์ฐ) ์ ๋๋ก ์๋ํ์ต๋๋ค.
์ฌ์ฉ์๊ฐ ํ๋/์ถ์ํ๋ ์ฆ์ ๋ ์ด๋ธ ์๋ ๋์ผํ๊ฒ ์ ์ง๋๊ณ ๊ฐ ํฌ๋งทํฐ๋ ๊ฐ์ด ๋ฐ๋ณต๋ ์ ์๋๋ก ๊ฐ๊ฒฉ์ ์ฑ์๋๋ค.
_์ค๋ณต๋ ๊ฐ์ด ์๋ ์ถ์ ์_
_๊ฐ์ ์ฐจํธ์ด์ง๋ง ํ๋ํ ์_
์คํฌ๋ฆฐ์ท์ 2
๊ฐ์ ๋ฐ๋ณตํ๋ ์ผ์ชฝ ์ถ์ ๋ณด์ฌ์ค๋๋ค. ์ด ๋ฐ๋ณต๋๋ ๋ ์ด๋ธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ต์ ์ ์ ์์ ๋ฌด์์
๋๊น? ๋์์ ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ์ถ๊ฐ ์ ๋ณด๊ฐ ํ์ํ๋ฉด ์๋ ค์ฃผ์ญ์์ค.
๊ฐ์ฌ ํด์
์ค๋ณต๋ ๋ ์ด๋ธ์ด ์๋ ๊ฒ ๊ฐ์๋ฐ 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๋ฅผ ์ฒจ๋ถํ์ต๋๋ค.
์๋์์ ๋์ผํ ๊ฐ์ ํ์ํ๋ ๋ ์ด๋ธ์ด ์๊ณ ๋ ์ด๋ธ์ด ์ ์ฒด ๊ฐ์ด์ด์ผ ํ๋ค๋ ์๊ตฌ ์ฌํญ์ด ์์ผ๋ฏ๋ก ์ฐจํธ๊ฐ ๋ค๋ฅธ ๋ ์ด๋ธ ์ฌ์ด์ ๋ ์ด๋ธ์ ๋ฐฐ์นํ์ง ์๋๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
์ ์๊ฒ ์ต๋๋ค. ์๋ฅผ ๋ค์ด [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
@steprescott , #388์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๊น?
๋ฌธ์ #388์ ๋ํ ์ปค๋ฐ์ ๋ณด๋ฉด ์ ์ผํ ๋ณ๊ฒฝ ์ฌํญ์ ๋ทฐํฌํธ์ ์ ์์ฑ์ ๋๋ค.
gif์ ํ์๋์ง๋ง ๋ณ๊ฒฝ ์ฌํญ๊ณผ ํจ๊ป ์๋ํ ๋์์ ์ป์ผ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น?
@steprescott ์๋ ํ์ธ์, [_chartView.viewPortHandler setMaximumScaleY: 2.f]๋ก ์๋ํ์ญ์์ค. ์๋ฅผ ๋ค์ด ์ด์ ๊ฐ์ด ํ๋/์ถ์์ ์ธ๋ถ์ฑ์ ๋ฐ๋ณต๋๋ ๊ฐ์ ํ์ํ ๋งํผ ํฌ์ง ์์ต๋๋ค. ์ข์ ์๋ ์ ํ์ด ์๋ ๊ฐ๋ก ๋ฌธ์ ๋ผ์ธ์ด ์์ ๋ ํ๋/์ถ์๊ฐ ํด ๋ ๋ชจ๋ Y ๊ฐ์ด ๋ฐ๋ณต๋๋ ๊ฒ์ ๋๋ค. MaximumScaleY๋ฅผ ์ฌ์ฉํ๋ฉด ์ด ๋ฐ๋ณต์ด ๋ฐ์ํ์ง ์์ต๋๋ค.
๋ฌด์ ํ:
์ ํ 2f:
์๋ ํ์ธ์ @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์ด๋ฉด ์ด๋ฌํ ๋ฐ๋ณต ์ถ ๋ ์ด๋ธ์ด ํ์๋ฉ๋๋ค.
๋ํ ๋ด๊ฐ ๊ฐ์ง๊ณ ์๋ ์ฝ๋ ์กฐ๊ฐ์ด ํ์ํ ์์ ์ ์ํํ์ง๋ง ๋จ์ํ ์ ์๋ง ํ์ฉํ๋ ์ค๋ณต ๊ฐ์ ์ ๊ฑฐํ์ง ์๋๋ค๋ ๊ฒ์ ์์์ต๋๋ค. ๋ฐ๋ผ์ ์ซ์ ํฌ๋งทํฐ์ ๋ํด ํ์ธํ๋ ๊ฒ์ ์ด๊ฒ์ ์ถ๊ฐํ๋ ๋์ฐํ ๋ฐฉ๋ฒ์ด ์๋๋๋ค.
ํด๋น ์ค๋ํซ์ด ํ์ฉํ์ง ์๋ ๊ฒ์ ์ค๋ณต๋ ๊ฐ์ ์ ๊ฑฐํ๋ ๊ฒ์ด๋ฏ๋ก ๊ฐ์ด 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", "์", "๋ชฉ"๊ณผ ๊ฐ์ ์์ผ๊ณผ ๊ฐ์ ์๊ฐ์ ์ ๊ณตํฉ๋๋ค. ๋จ์ ์ํด ๋ฑ๋ฑ..
์ฐจํธ๋ฅผ ๋๋ฌด ๋ง์ด ํ๋ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๊ฐ์ด ๋ณต์ ๋๊ธฐ ์์ํฉ๋๋ค.
์ด ๊ฒฝ์ฐ 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์ถ ๋ ์ด๋ธ ์๋ฅผ ๊ฐ์ ๋ก ์ ์ฉํ๊ณ ๋ช ๊ฐ์ง ์ ์ ํ์ํ ๋๋ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด๊ฒ์
granularity
๊ธฐ๋ฅ์ผ๋ก 2.2.4์์ ๋ฆด๋ฆฌ์ค๋์์ต๋๋ค.