рдирдорд╕реНрддреЗ,
3.0 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ, рдореБрдЭреЗ рдмрд╛рд░ рдЪрд╛рд░реНрдЯ рдореЗрдВ рдмрд╛рд░ рди рджрд┐рдЦрдиреЗ рд╕реЗ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рд░рд╣реА рд╣реИред
рдПрдХ рдмрд╛рд░ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдмрд┐рдВрджреБ рд╣реИред рдЕрдЧрд░ рдореИрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд┐рдВрджреБ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ рддреЛ рдмрд╛рд░ рдирд╣реАрдВ рджрд┐рдЦрддреЗ рд╣реИрдВред
рдпрд╣ рддрднреА рд╣реЛ рд░рд╣рд╛ рд╣реИ рдЬрдм xaxis рдореЗрдВ рддрд┐рдерд┐рдпрд╛рдВ рд╣реЛрдВред рдЕрдЧрд░ рдореИрдВ рддрд╛рд░реАрдЦреЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдкреВрд░реНрдгрд╛рдВрдХ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдХреГрдкрдпрд╛ рд╕рдВрд▓рдЧреНрди рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рджреЗрдЦреЗрдВред
рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рдирдореВрдирд╛ рдЗрд╕ рдХреЗ рд╕рдорд╛рди рд╣реЛрдЧрд╛
{
"09/04/2012": "245",
"02/05/2013": "227",
"04/07/2013':"234",
"07/08/2015": "244",
"10/11/2016": "2254"
}
рдзрдиреНрдпрд╡рд╛рдж,
рдмреАрдУрдмреА
рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджреЗрдЦрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдмрд╛рд░ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣реЗ рд╣реИрдВ? рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдХрд╛рд░рдг рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ?
рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЗрд╕рдХрд╛ рдХреЛрдИ рд╣рд▓ рд╣реИ?
рдпрд╣ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 3.0 рдореЗрдВ рдмрд╛рд░ рдЧрд╛рдпрдм рд╣реИрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдпрд╛ рддреЛ рдХреЙрд▓ рдорд┐рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдпрд╛ рдХреБрдЫ рд╕реЗрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЕрдЧрд░ рдЗрд╕рдХрд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рд╣реИ рддреЛ рдпрд╣ рдмрд╣реБрдд рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛ред
рдзрдиреНрдпрд╡рд╛рдж,
рдмреАрдУрдмреА
рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ? рдЪрд╛рд░реНрдЯ 3.0 рдиреЗ x рдЕрдХреНрд╖ рдХреЛ рдлрд┐рд░ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмрд╣реБрдд рд╕реА рдЪреАрдЬрд╝реЗрдВ рдмрджрд▓ рдЧрдИ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЕрдкрдирд╛ рдХреЛрдб рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реЛред рдЕрднреА рдХреЗ рд▓рд┐рдП, рдХреГрдкрдпрд╛ рд╡рд┐рднрд┐рдиреНрди рдмрд╛рд░ рдЪрд╛рд░реНрдЯ рдбреЗрдореЛ рдХреЗ рд▓рд┐рдП рдЪрд╛рд░реНрдЯреНрд╕рдбреЗрдореЛ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред
рдореИрдВ рдлрд┐рд░ рд╕реЗ рдбреЗрдореЛ рдЪрд╛рд░реНрдЯ рдЪрд▓рд╛рдКрдВрдЧрд╛ рдФрд░ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдЕрдиреНрдп рдореБрджреНрджреЗ # 1716 рдХреЗ рд╕рдорд╛рди рд╣реИред
рдПрдХ рдмрд╛рд░ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдХреБрдЫ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдФрд░ рдЪрд╛рд░реНрдЯреНрд╕ рдбреЗрдореЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж рдореИрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд╛рдкрд╕ рдЖрддрд╛ рд╣реВрдБред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ x- рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдзрдиреНрдпрд╡рд╛рдж,
рдмреАрдУрдмреА
рдореБрдЭреЗ рднреА рдпрд╣реА рддрдХрд▓реАрдлрд╝ рд╣реИред рдореЗрд░рд╛ рдПрдХреНрд╕-рдЕрдХреНрд╖ рджрд┐рдирд╛рдВрдХ YYYY-MM-DD рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдмрд╛рд░ рдЕрджреГрд╢реНрдп рд╣реИрдВред
@ рд▓рд┐рдХреНрд╕реБрдЖрди 30 ,
рдпрд╣рд╛рдВ рдореИрдВрдиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ ... рдореИрдВрдиреЗ рдЪрд╛рд░реНрдЯреНрд╕рдбреЗрдореЛ рдореЗрдВ 3.0 рдореЗрдВ рдХреБрдЫ рдмрджрд▓рд╛рд╡ рдХрд┐рдП рд╣реИрдВ рдФрд░ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ ...
рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдПред рдПрдХреНрд╕ рдорд╛рди рдбрдмрд▓ рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдореИрдВ 1 9 70 рд╕реЗ рдбреЗрдЯрд╛рдЯрд╛рдЗрдо рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рддрд┐рдерд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдбрдмрд▓ рдорд╛рди рд╣реИред
рдПрдХ dd / MM рдХреЗ xaxis рдлреЙрд░реНрдореИрдЯрд░ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ред
рд╕рд╛рде рд╣реА BarChartViewController.m рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╕рдВрд▓рдЧреНрди рдХрд░рдХреЗ рдЖрдк рдЗрд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдиреАрдЪреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рджреЗрдЦреЗрдВред
рдпрд╛ рддреЛ рдореБрдЭреЗ рдХреБрдЫ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдпрд╣ рдПрдХ рдмрдЧ рд╣реИред
рдзрдиреНрдпрд╡рд╛рдж,
рдмреАрдУрдмреА
рдирдорд╕реНрддреЗ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдХреНрдпреЛрдВ рдмрдВрдж рд╣реИ, рд▓реЗрдХрд┐рди рдЙрди рд╕рднреА рд▓реЛрдЧреЛрдВ рдХреА рддрд░рд╣ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдпрд╣рд╛рдВ рдФрд░ https://github.com/danielgindi/Charts/issues/1716 рдореЗрдВ рд▓рдХреНрд╖рдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИ, рдореИрдВ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рд╣реА рдмрдЧ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдПрдХреНрд╕-рдЕрдХреНрд╖ рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдЬреИрд╕реЗ рдмрдбрд╝реЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓ рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдЪрд╛рд░реНрдЯ рдХреЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЛ рдЧрдбрд╝рдмрдбрд╝ рдХрд░ рджреЗрддрд╛ рд╣реИред
@sjuvvalapalem рдореВрд▓ рдЪрд╛рд░реНрдЯрдбреЗрдореЛ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? рдореИрдВ рдЖрдкрдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ред рдЪрд╛рд░реНрдЯ 3.0 рдореЗрдВ, x рдорд╛рди рд╣рдореЗрд╢рд╛ рджреБрдЧреБрдиреЗ рд╣реЛрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдиреЗ рдХреБрдЫ рднреА рдмрджрд▓рд╛ рд╣реИ, рддреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рд╕рднреА рд╕рдВрдмрдВрдзрд┐рдд рдХреНрд╖реЗрддреНрд░ рдХреЛ рдмрджрд▓ рджреЗрдВред рдЖрдк рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рдмрд╛рд░ рдЧрд╛рдпрдм рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдмрд╛рд░ рдЪрд╛рд░реНрдЯ рд░реЗрдВрдбрд░рд░ рдореЗрдВ drawDataSets
рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдкрдиреА рддрд░рдл рд╕реЗ рдбрд┐рдмрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред
BarChartViewController.m.zip
@ liuxuan30 рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЙрддреНрддрд░ рдореЗрдВ рдкрд╣рд▓реЗ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕рдВрд▓рдЧреНрди рдХрд┐рдпрд╛ рд╣реИред
рдореИрдВрдиреЗ рдЬреЛ рдХреБрдЫ рдХрд┐рдпрд╛ рд╡рд╣ рдбрдмрд▓ рдХреЗ рдмрдЬрд╛рдп рдХреБрдЫ рддрд┐рдерд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╕ Nstimeinterval рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдпрд╣ рдмрд╛рд░ рдирд╣реАрдВ рджрд┐рдЦрд╛ рд░рд╣рд╛ рдерд╛ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдмрдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХреГрдкрдпрд╛ рд╕рдВрд▓рдЧреНрди рдЬрд╝рд┐рдк рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рджреЗрдЦреЗрдВ, рдЖрдк рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдмрдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рдкрд░ рдХрд┐рд╕реА рднреА рдорджрдж рдХреА рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдРрдкрд╕реНрдЯреЛрд░ рдкрд░ рдзрдХреЗрд▓рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рд░реЛрдХрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
рдЗрд╕рдХрд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдмрд╣реБрдд рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛ред
рдзрдиреНрдпрд╡рд╛рдж,
рдмреАрдУрдмреА
@ liuxuan30 рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЦреБрд▓рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рддрд╛рдХрд┐ рдпрд╣ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреА рддрд░рд╣ рд╣реА рдЕрдзрд┐рдХ рдХрд░реНрд╖рдг рдкреНрд░рд╛рдкреНрдд рдХрд░реЗред
рдзрдиреНрдпрд╡рд╛рдж,
рдмреАрдУрдмреА
рдореБрдЭреЗ рдЦреЗрдж рд╣реИ рдХрд┐ рдореИрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ рд╡реНрдпрд╕реНрдд рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдмрд╣реБрдд рдЬрд▓реНрджреА рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ред рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ
NSTimeInterval рджреЛрд╣рд░реА рд╣реИ рдореБрдЭреЗ рдпрд╛рдж рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП редред
@ liuxuan30 рд╣рд╛рдБ, рдпрд╣ рдПрдХ рдбрдмрд▓ рд╣реИред рдлреЙрд░реНрдореЗрдЯрд░ рдХреЗ рд╕рд╛рде, рддрд┐рдерд┐рдпрд╛рдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВред рд╕рд▓рд╛рдЦреЛрдВ рдХреЗ рдКрдкрд░ рдХреЗ рдорд╛рди рд╕рд╣реА рдврдВрдЧ рд╕реЗ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред
рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдмрд╛рд░ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣реЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдк рд╡реНрдпрд╕реНрдд рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рдХреЛрдИ рдФрд░ рд╣реИ рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ/рдмрдЧ рдХреЛ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИ?
рдзрдиреНрдпрд╡рд╛рдж,
рдмреАрдУрдмреА
рдареАрдХ рд╣реИ, рдореИрдВрдиреЗ рдПрдХ рддреНрд╡рд░рд┐рдд рдЬрд╛рдБрдЪ рдХреАред
рдПрдХреНрд╕ рдЕрдХреНрд╖ рд░реЗрдВрдЬ рд╣реИ
(lldb) po max - min
34041601.0
рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд░рддреЗ рд╕рдордп, barRect рдХреА рдЪреМрдбрд╝рд╛рдИ рдмрд╣реБрдд рдЫреЛрдЯреА рд╣реЛрддреА рд╣реИ:
тЦ┐ (30.7373051480045, 132.310035326087, 8.28906013339292e-06, 257.842777173913)
тЦ┐ origin : (30.7373051480045, 132.310035326087)
- x : 30.7373051480045
- y : 132.310035326087
тЦ┐ size : (8.28906013339292e-06, 257.842777173913)
- width : 8.28906013339292e-06 // <-- you won't see it
- height : 257.842777173913
рддреЛ рдЖрдк рдЗрд╕реЗ рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВред
рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рд╣реИ, x рд╡реИрд▓ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП prepareBuffer()
,
рдЪрд▓реЛ barWidthHalf = barData.barWidth / 2.0 // barWidth 0.9 . рд╣реИ
рддрдм рдлрд┐рд░
let left = CGFloat(x - barWidthHalf)
let right = CGFloat(x + barWidthHalf)
barRect.size.width = right - left
рдпрд╣ рддреБрдЪреНрдЫ рд╣реИред
@danielgindi рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдмрдбрд╝реЗ рдореВрд▓реНрдпреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП barWidth
рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдпрд╛ рдпрд╣ рдбрд┐рдЬрд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рд╣реИред
x рд░реЗрдВрдЬ рдмрд╣реБрдд рдмрдбрд╝реА рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рд╣реА рдмрд╛рд░ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдо рдмрд╛рд░ рдХреА рдЪреМрдбрд╝рд╛рдИ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣рд╛рд░реНрдб рдХреЛрдбреЗрдб рдирдВрдмрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛрддреА рд╣реИред рдореИрдВрдиреЗ рдмрд╛рд░рд╡рд┐рдбреНрде, рдЫреЛрдЯреА рдЧрд╛рдбрд╝реА рдХреЛ "рд╕рд╛рдорд╛рдиреНрдп" рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред
рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рдмрдбрд╝реА рджрд┐рди рдЗрдХрд╛рдЗрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рди рдХрд┐ x рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реЗрдХрдВрдбред рдпрд╛ рдЖрдк рдЗрд╕реЗ рдХреЗрд╡рд▓ 1,2,3,4,.. рдореЗрдВ рдмрджрд▓ рджреЗрдВ рдФрд░ рдлреЙрд░реНрдореЗрдЯрд░ рдХреЛ рдлреЙрд░реНрдореЗрдЯ рдХрд░рдиреЗ рджреЗрдВред рдЖрдкрдХреЗ рдбреЗрдЯрд╛ рдореЗрдВ, рдЖрдкрдХреЗ x рд╡реИрд▓ рдПрдХ рд╡рд░реНрд╖ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рджрд┐рдиреЛрдВ рдореЗрдВ рднреА, рдпрд╣ 365 рдмрд╛рд░ рд╣реИ рдФрд░ рдмрд╛рд░ рднреА рдкрддрд▓рд╛ рд╣реЛрдЧрд╛ред
рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ barWidth
рдХреЛ рдмрджрд▓рдирд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреА рдореВрд▓реНрдп рд╕реАрдорд╛ рдореЗрдВ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрднреА рддрдХ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рд╢реЙрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рд╣реА рд╕рдВрдЦреНрдпрд╛ рдХреИрд╕реЗ рдвреВрдВрдвреЗрдВред
рдирдорд╕реНрддреЗ,
рдореБрдЭреЗ рдареАрдХ рд╡реИрд╕реА рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрдВрдж рд╣реЛ рдЧрдИ рд╣реИ ...
рдпрджрд┐ рдореИрдВ рдПрдХ рд▓рд╛рдЗрди рдЪрд╛рд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдЪрд╛рд░реНрдЯ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЖ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВрдиреЗ рд▓рдВрдмрд╡рдд рдмрд╛рд░ рдЪрд╛рд░реНрдЯ рдЪреБрдирд╛ рд╣реИ, рддреЛ рдХреЛрдИ рдмрд╛рд░ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред
рдореЗрд░реЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рд╡реГрджреНрдзрд┐ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рдмрдЧ рд╣реИред
рдзрдиреНрдпрд╡рд╛рдж
BarChartData.barWidth рдХреЛ рд╡рд┐рд╢рд╛рд▓ рдорд╛рди (~10 000) рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ
рдореИрдВрдиреЗ рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдХреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛
рдЪрд╛рд░реНрдЯрдбреЗрдЯрд╛рд╕реЗрдЯ.рдмрд╛рд░рдмреЙрд░реНрдбрд░рдХрд▓рд░ = UIColor.blue
рдЪрд╛рд░реНрдЯрдбреЗрдЯрд╛рд╕реЗрдЯ.рдмрд╛рд░рдмреЙрд░реНрдбрд░рд╡рд┐рдбреНрде = 30
рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдкрдХреА рдорджрдж рд╣реЛрдЧреА
рдмрд╛рд░рдмреЙрд░реНрдбрд░рд╡рд┐рдбреНрде рд╕реЗрдЯ рдХрд░рдирд╛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред
рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди? BarBorderWidth рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдХреЗрд╡рд▓ рдПрдХ рдпрд╛ 2 рдбреЗрдЯрд╛ рдмрд┐рдВрджреБ рд╣реИрдВ рддреЛ рд▓рд╛рдЗрдиреЗрдВ рдмрд╣реБрдд рдкрддрд▓реА рд╣реИрдВ (рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдЖрдкрдиреЗ рдЗрд╕реЗ barBorderWidth 1 рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ)ред рдпрджрд┐ рдЕрдзрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╕рднреА рдмрд╛рд░ рдЖрдкрд╕ рдореЗрдВ рдЬреБрдбрд╝ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╕рд╛рде рдорд┐рд▓ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЕрдЪреНрдЫреЗ рдирд╣реАрдВ рд▓рдЧрддреЗ рд╣реИрдВред
рдЗрд╕ рдкрд░ рдХрд┐рд╕реА рднреА рдХрд╛рдо рдХреА рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред
рдПрдХ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░реЗрдВ!
рдореЗрд░рд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг:
рдпрд╣ рдПрдХ рдмрдЧ рд╣реИ ... рджрд┐рдирд╛рдВрдХ long
рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдорд╛рди 1542039314621 рд╣реИ, рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ 12 рдирд╡рдВрдмрд░ 2018 SimpleDateFormat рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рджред рд▓реЗрдХрд┐рди рдПрдХреНрд╕ рдПрдХреНрд╕рд┐рд╕ рдкрд╣рд▓реЗ рдЕрдкрдирд╛ long
рдореВрд▓реНрдп рд▓реЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛрддреА рд╣реИред рдореЗрд░реЗ рд╕рдорд╛рдзрд╛рди xHelper, рдмрдЬрд╛рдп рдЗрдирдкреБрдЯ рдмрдбрд╝рд╛ рдореВрд▓реНрдп, xHelper рд╕реВрдЪрдХрд╛рдВрдХ рдХрд░ рд░рд╣реА рд╣реИ long
рдбреЗрдЯрд╛ рдкрд░реЛрдХреНрд╖ рдХрд╛рдЙрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЯрд╛рдЗрдк counter++
, Xvalue рдмрдЧрд▓ рдореЗрдВ рдмрдбрд╝рд╛ рдкрдХрдбрд╝ long
рдореВрд▓реНрдпред рдФрд░ рдпрд╣ рдХреЛрдб рдПрдХ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдпрд╣ рдЧрд▓рдд рдХреЛрдб рд╣реИ:
String[] month = new String[] {"Jan", "Feb", "Mar", "Aprl"};
xAxis.setValueFormatter(new MyXAxisValueFormatter(month));
рдпрд╣ рдЧрд▓рдд рдХреЛрдб рд╣реИ:
xAxis.setValueFormatter(new IAxisValueFormatter() {
<strong i="20">@override</strong>
public String getFormattedValue (float value, AxisBase axis){
Date dates = new Date((long) value); //take your long value from BarEntry
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM");
return sdf.format(dates);
}
}
рдпрд╣ рдЧрд▓рдд рдХреЛрдб рд╣реИ:
for (int i = 0; i < xValues.length; i++)
Date date = new Date(xValues[i]);
рдпрд╣ рдЧрд▓рдд рдХреЛрдб рд╣реИ:
List<Date> dates = new ArrayList<Date>();
for (int i = 0; i< xHelper.length; i++)
dates.add(new Date(xValues[i]));
рдпрд╣ рдХреЛрдб рдПрдХ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM"); // as you seen on the picture
String[] xDates = new String[xHelper.length];
for (int m = 0; m < xHelper.length; m++)
xDates[m] = sdf.format(new Date(xValues[m]));
List<String> myDateList = new ArrayList<String>();
for (int n = 0; n < xHelper.length; n++)
myDateList.add(xDates[n]);
//convert your ArrayList into array
String[] month = (String[]) myDateList.toArray(new String[xHelper.length]);
xAxis.setValueFormatter(new YourXAxisValueFormatter(month));
рдпрд╣ рдореЗрд░рд╛ рдкреВрд░реНрдг рдХреЛрдб рд╣реИ рдФрд░ xValue рдФрд░ xHelper рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдм рдХреБрдЫ рдмрддрд╛ рджреЗрддрд╛ рд╣реИред
public class MyDatabaseHelper {
long xValue
int xHelper, yValues;
//empty constructor
public MyDatabaseHelper(){
}
//constructor
public MyDatabaseHelper(long xValue, int yValues, int xHelper){
this.xValue = xValue;
this.yValue = yValue;
this.xHelper = xHelper;
}
//Method
public long getxValue() {return xValues;}
public int getyValue() {return yValues;}
public int getxHelper() {return xHelper;}
}
рдЗрд╕рдХреЗ рдмрд╛рдж рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рдмрдирд╛рдПрдВ рдФрд░ рдлрд┐рд▓рд┐рдк рдЬрд╛рд╣реЛрджрд╛ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж
public class MyXAxisValueFormatter implements IXAxisValueFormatter {
private String[] mValues;`
//constructor with array parameter
public MyAxisValueFormatter(String[] values) {
this.mValues = values;
}
<strong i="9">@override</strong>
public String getFormattedValue(float value, AxisBase axis) {
return mValues[(int) value];
}
}
рдЕрдВрдд рдореЗрдВ MainActivity class рдмрдирд╛рдПрдВ:
public class MainActivity extends AppCompatActivity {
EditText yInput;
Button buttonInsert;
FirebaseDatabase firebaseDatabase;
DatabaseReference reference;
BarChart barChart;
//this is xHelper as counter for indexing x values
int counter = 0;
<strong i="13">@override</strong>
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
yInput = (EditText) findViewById(R.id.editText);
insertButton = (Button) findViewById(R.id.buttonInsert);
firebaseDatabase = FirebaseDatabase.getInstance();
reference = firebaseDatabase.getReference("ChartTable");
insert();
}
public void insert() {
buttonInsert.setOnClickListener(new View.OnClickListener() {
<strong i="14">@override</strong>
public void onClick (View v)
String id = reference.push().getKey();
long x = new Date().getTime(); //this is big value
int y = yInput.getText().toString();
// when you click button this counter increase
//note: using this counter will make your app being crash on 5 step Granularity
//my granularity is setGranularity(5);
//this is my problem and i don't know why. so, i have to make the counter start from zero
//like this
counter++
int c = counter - 1;
// input value into class
MyDatabaseHelper db = new MyDatabaseHelper(x, y, c);
//input method into Firebase Database
reference.child(id).setValue(db);
});
}
<strong i="15">@override</strong>
protected void onStart {
super.onStart();
reference.addValueEventListener(new ValueEventListener() {
<strong i="16">@override</strong>
public void onDataChange(<strong i="17">@NonNull</strong> DataSnapshot dataSnapshot) {
int count = (int) dataSnapshot.getChildrenCount();
long[] xValues = new long[count];
int[] yValues = new int[count];
int[] xHelper = new int[count];
int index = 0;
for (DataSnapshot myDataSnapshot : dataSnapshot.getChildren()){
MyDatabaseHelper db = myDataSnapshot.getValue(MyDatabaseHelper.class);
xValues[index] = db.getxValue();
yValues[index] = db.getyValue();
xHelper[index] = db.getxHelper();
index++
}
ArrayList<BarEntry> barEntry = new ArrayList<BarEntry>();
for (int i = 0; i < xHelper.length; i++)
barEntry.add(new BarEntry(xHelper[i], yValues[i]));
BarDataSet set1 = new BarDataSet(barEntry, "Project Progress");
set1.setColors(ColorTemplate.VORDIPLOM_COLORS);
set1.setDrawValues(false);
ArrayList<IBarDataSet> dataSets = new ArrayList<>();
dataSets.add(set1);
BarData data = new BarData(dataSets);
XAxis xAxis = barChart.getXAxis();
xAxis.setGranularity(5f);
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
// input xValues[] into Date using List
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM");
String[] xDates = new String[count];
for (int m =0; m < xValues.length; m++)
xDates[m] = sdf.format(new Date(xValues[m]));
List<String> xDatesList = new ArrayList<String>();
for (int n = 0; n < xDates.length; n++)
xDatesList.add(xDates[n]);
// you cannot insert xDatesList directly into setValueFormatter
//so convert ArrayList into array
String[] month = (String[]) xDatesList.toArray(new String[count]);
//finally
xAxis.setValueFormatter(new MyXAxisValueFormatter(month));
//done
barChart.getAxisRight().setEnabled(false);
barChart.setDragEnabled(true);
barChart.setScaleEnabled(true);
barChart.setPinchZoom(true);
barChart.setDoubleTapToZoomEnabled(false);
barChart.setDrawGridBackground(false);
barChart.setDragEnabled(true);
barChart.setData(data);
barChart.invalidate();
}
<strong i="18">@override</strong>
public void onCancelled(<strong i="19">@NonNull</strong> DatabaseError databaseError){
}
});
}
}
рд╕рдм рдХреБрдЫ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдФрд░ рдпрд╣ рдореЗрд░рд╛ рд╡рд┐рд╡рд░рдг рд╣реИ:
рдореИрдВ рдЗрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛:
String[] month = new String[] {"Jan", "Feb", "Mar", "Aprl"};
xAxis.setValueFormatter(new MyXAxisValueFormatter(month));
рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдЧрддрд┐рд╢реАрд▓ рдЗрдирдкреБрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдореИрдВ "рдЬрди", "рдлрд╝рд░рд╡рд░реА" рдФрд░ рдЖрдЧреЗ рдирд╣реАрдВ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ред рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди:
String[] month = (String[]) myDateList.toArray(new String[xHelper.length]);
myDateList.toArray
рдЖрдкрдХреЛ ArrayList рд▓реЗрдиреЗ рдФрд░ рдЗрд╕реЗ рд╕рд░рдгреА рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдФрд░ рдореИрдВ рдЗрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рдХреНрдпреЛрдВрдХрд┐ ->
xAxis.setValueFormatter(new IXAxisValueFormatter {
<strong i="15">@override</strong>
public String getFormattedValue(float value, AxisBase axis) {
Date dates = new Date((long) value)
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM");
return sdf.format(dates);
}
}
рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ value
x рдПрдХреНрд╕рд┐рд╕ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдмрд╛рд░реНрд╕ рдХреЛ рдЧрд╛рдпрдм рдХрд░ рджреЗрддрд╛ рд╣реИред рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рдЗрд╕ рддрд░рд╣ xHelper
рд╣реИ:
ArrayList<BarEntry> barEntry = new ArrayList<BarEntry>();
for (int i=0; i<xHelper.length; i++)
barEntry.add(new BarEnry(xHelper[i], yValues[i]));
рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ, xHelper
рдореЗрдВ рдЕрдиреБрдХреНрд░рдордг рдХреЗ рд▓рд┐рдП рдЫреЛрдЯрд╛ рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП Date
рдФрд░ рдпрд╣ рд░рд╣рд╕реНрдп рд╣реИ:
рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Date
рдЗрдирдкреБрдЯ рдирд╣реАрдВ рдХрд░рддреЗ --> String[] month = new String[]{...};
рд▓реЗрдХрд┐рди myDateList
String[] month = (String[]) myDateList.toArray(new String[xHelper.length]);
xAxis.setValueFormatter(new YourXAxisValueFormatter(month));
@sjuvvalapalem @avitus рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ред
рдЗрд╕ рдмрдЧ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдП 2 рд╕рд╛рд▓ рд╣реЛ рдЧрдП рд╣реИрдВ, рдФрд░ рдЕрднреА рднреА рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ?
рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрдЖрд░ рдлрд╛рдЗрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдореИрдВрдиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрд╕реЗ added this to To do in 4.0 Release
рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдерд╛
рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдереА рдФрд░ рдПрдХреНрд╕-рдЕрдХреНрд╖ рдХреА рд╕реАрдорд╛ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдореЗрд░реЗ рдмрд╛рд░ рдХреЛ рд╕рд╣реА рдЖрдХрд╛рд░ рдореЗрдВ рд╕реЗрдЯ рдХрд░рдХреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛:
let data = BarChartData(dataSets: [dataSet])
let dataSetRange = dataSet.xMax - dataSet.xMin
let availableSpacePerBar = dataSetRange / Double(dataSet.entryCount)
data.barWidth = availableSpacePerBar * 0.8 // 80% of available space
chartView.data = data
BarChartData.barWidth рдХреЛ рд╡рд┐рд╢рд╛рд▓ рдорд╛рди (~10 000) рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ
рдпрд╣ рддрдм рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм https://github.com/danielgindi/Charts/issues/1742#issuecomment -519056482 рдЖрдкрдХреЗ рдбреЗрдЯрд╛ рд░реЗрдВрдЬ рдХреЗ рдмреАрдЪ рдХреБрдЫ рд▓рд╛рдкрддрд╛ рдорд╛рди рд╣реИрдВ, рдпрд╛рдиреАред рдЧреИрд░ рдирд┐рд░рдВрддрд░ рдФрд░ рдЖрд╡рдзрд┐рдХ рдбреЗрдЯрд╛ рд╕реНрд░реЛрддред
рдпрджрд┐ рдЖрдкрдХреЗ рдмреАрдЪ рдореЗрдВ рд▓рд╛рдкрддрд╛ рдорд╛рди рд╣реИрдВ,
рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдмрд╛рдж https://github.com/danielgindi/Charts/issues/1742#issuecomment -519056482
BarChartData.barWidth рдХреЛ рднрд╛рд░реА рдореВрд▓реНрдп (~ 10 000) рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ
рд▓реЗрдХрд┐рди рджреЛрдиреЛрдВ рдмрдбрд╝реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рднреА рдкрд░реНрдпрд╛рдкреНрдд рдирд┐рд░рдВрддрд░ рдореВрд▓реНрдп рд╣реЛрддреЗ рд╣реИрдВ
рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл 3 рдШрдВрдЯреЗ рдЧрдВрд╡рд╛рдП, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдкрд░ рдирдЬрд░ рд░рдЦ рд░рд╣рд╛ рд╣реВрдВред рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдереА рдФрд░ рдПрдХреНрд╕-рдЕрдХреНрд╖ рдХреА рд╕реАрдорд╛ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдореЗрд░реЗ рдмрд╛рд░ рдХреЛ рд╕рд╣реА рдЖрдХрд╛рд░ рдореЗрдВ рд╕реЗрдЯ рдХрд░рдХреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛: