์๋ ํ์ธ์ ,
C3 ์ฐจํธ๋ ์ฌ์ฉ ๊ฐ๋ฅํ ์ต๊ณ ์ ์ฐจํธ์ ๋๋ค. ์ฐจํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์ผ๋ง๋ ์ฌ์ด ์ง ๋ฏฟ์ ์ ์์ต๋๋ค.
์ ์ผํ ๊ฒ์ ์ฐจํธ๋ฅผ ๋ด๋ณด๋ด๋ ๋ฐฉ๋ฒ์ ๋๋ค.
์ด์ ๊ด๋ จํ์ฌ ์ ๋ฅผ ๋์์ฃผ์ธ์.
๊ฐ์ฌ.
์ฐจํธ๋ฅผ pdf๋ก ๋ด๋ณด๋ด๋ ค๊ณ ํ๊ฑฐ๋ ์ด๋ฏธ์ง๋ก ๋ณํํ๊ณ ์ถ์ต๋๋ค ... ๋๊ตฐ๊ฐ ์์ด๋์ด๊ฐ ์์ผ๋ฉด ๋์์ฃผ์ธ์
ํนํ ๋ง์ ๋ธ๋ผ์ฐ์ ๋ฒ์ ์ ์ง์ํ๋ ค๋ ๊ฒฝ์ฐ Javascript๋ก๋งํ๋ ๊ฒ์ ์ฝ์ง ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ ์บ๋ฒ์ค๋ฅผ ์ง์ํ๋ ๊ฒฝ์ฐ (๋ชจ๋ ์ต์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ง์ํจ) ๋น๊ต์ ์ฌ์ด ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. SVG๋ฅผ ์บ๋ฒ์ค๋ก ๋ณํํ๋ canvg (https://code.google.com/p/canvg/) ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ (http://www.nihilogic.dk/labs/canvas2image/)์ ๊ฐ์ด ์ฌ์ฉ์๊ฐ ๋ก์ปฌ์ ์ด๋ฏธ์ง ํ์ผ๋ก ์ ์ฅํ ์ ์์ต๋๋ค. ๊ทธ๋๋ ์ง์ ์๋ํ์ง ์์๊ธฐ ๋๋ฌธ์ C3 ์ฐจํธ์์ ์์ ์ ์ผ๋ก ์๋ํ๋์ง ์ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ํ๊ตฌ ํ ๋ฐฉํฅ์
๋๋ค.
์๋
ํ์ธ์, ์ ์ฉ ํ ์๋ ์์ง๋ง (http://jsfiddle.net/8ypxW/3/) ์์ง ์ฑ๊ณตํ์ง ๋ชปํ์ต๋๋ค.
๋ด๊ฐ ์๋ํ ๊ฒ์ ์๋ ์ฝ๋ (span ํ๊ทธ) ์์ C3 ์ฐจํธ (div ํ๊ทธ)๋ฅผ ๋ฃ์์ง๋ง ๋ค์ด๋ก๋ ๊ฒฐ๊ณผ๋ ๋น ์ด๋ฏธ์ง์
๋๋ค !!!
์
๋ฐ์ดํธ : http://jsfiddle.net/panubear/mGDt8/ >> ์ถ๋ ฅ ์ด๋ฏธ์ง๋ c3 ์ฐจํธ์์ด ์์ฑ๋์์ต๋๋ค.
์์ ์ค์ธ C3 ๊ธฐ๋ฐ ์ฐจํธ ๋น๋๋ฅผ ์ํด์ด ์์ ์ ์ํํ๊ณ ์์ผ๋ฉฐ ์๋ฃ๋๋ฉด ์ฝ๋๋ฅผ ๊ณต์ ํ ๊ฒ์ ๋๋ค. canvg ์ ๋ํ @lblb์ ์์ ์ ๋์ํ๋ฉด Quartz๊ฐ ChartBuilder์์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ์ํํ๋ ๋ฐฉ๋ฒ๊ณผ PNG๋ฅผ ์ถ๋ ฅํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ด๋์ด๋ https://github.com/Quartz/Chartbuilder/blob/master/js/chartbuilder.js#L295๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
์ข์์, ์๋ํ๊ฒ๋์์ต๋๋ค. ๋ค์์ Quartz / Chartbuilder ์์ ๋ป๋ปํ๊ฒ ๊ฐ์ ธ์จ Angular ์ง์๋ฌธ์
๋๋ค . ๋ชจ๋ Angular ํญ๋ชฉ์ ๋ฌด์ํ๊ณ ๋ชจ๋ ์ค์ ์์
์ createChartImages()
์์ ์ํ๋ฉ๋๋ค.
์์ปจ๋ ๋ด๊ฐํด์ผ ํ ์ผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
canvas
์์๋ฅผ ๋ง๋ญ๋๋ค.stroke: #000
๋ฐ fill: none
.)fill: none
๋ฅผ ์ค์ ํ์ฌ ์ด์ํ ๋ฒ ์ง์ด ํด๋ฆฌํ ํจ๊ณผ๋ฅผ ์ป์ง ์๋๋กํฉ๋๋ค.์ฐธ๊ณ ์ ๋ ๋จ์ํ ์๋ฆฌ์ฆ ์ฐจํธ๋ก๋ง ์ด๊ฒ์ ํ ์คํธํ์ต๋๋ค. ๋ค๋ฅธ ์ฐจํธ ์ ํ์ ๋ฌธ์ ๊ฐ์์ ๊ฐ๋ฅ์ฑ์ด ๋งค์ฐ ๋์ผ๋ฉฐ ๊ณ ์ ํ ์กฐ์ ์ด ํ์ํ ๊ฒ์ ๋๋ค.
ํธ์ง : SVG ์ถ๋ ฅ์ด ๊ด์ฐฎ์ ๋ณด์ด์ง๋ง "์์ญ"์ ํ์ด PNG ์ถ๋ ฅ์ ์์ ํ ๊นจ๋จ๋ฆฌ๋ ๊ฒ ๊ฐ์ต๋๋ค. SVG ์ถ๋ ฅ์ด ๋ชจ๋ ์ฐจํธ ์ ํ, AFAIK์์ ์๋ํ๋๋ก ์์ ํ์ต๋๋ค.
์ต์ ํธ์ง : Gist๋ฅผ ์ ๋ฐ์ดํธํ์ต๋๋ค. ์ด์ PNG์ SVG๋ฅผ ํฌํจํ ๋ชจ๋ ์ฐจํธ ์ ํ์์ ์๋ํฉ๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ํจ๊ป ์๋ํ๋ ๊ตฌํ์ ์ํ๋ ๊ฒฝ์ฐ ๋ค์ ๋ฉฐ์น ๋ด์ ์ธ์ ๊ฐ LlamaCharts๋ฅผ ์ถ์ํ๊ธฐ๋ฅผ ํฌ๋งํฉ๋๋ค.
์๋ ํ์ธ์ @aendrew
์ ๋ .png
, .jpeg
, .gif
๋ฐ .pdf
๋ฅผ ์ง์ํ๋ ๋ด๋ณด๋ด๊ธฐ ์์
์ ํด์์ต๋๋ค. ์ฌ๊ธฐ์์ ๋ด ํ์ญ์์ค
๊ทธ๋ฌ๋ ๋ด ๋ฐฉ๋ฒ์ phantomjs์ ์์กดํ๋ _server-side_ ๊ตฌํ์ ๋๋ค. ์ ์๊ฐ์๋ ํด๋ผ์ด์ธํธ ์ชฝ ๋ด๋ณด๋ด๊ธฐ๋์๋ ๊ฒ์ด ์ข์ต๋๋ค. ์์ฑ ๋ ๋ฒ์ ์๋ณด๊ณ ์ถ์ต๋๋ค
@yuvii ์๋ ํ์ธ์! ๋ด ํ๋ก์ ํธ๋ฅผ ์ถ์ํ์ต๋๋ค (์๋ง์ด ๋ฌธ์ ๋ฅผ ์ ๋ฐ์ดํธํ์ ๊ฒ์ ๋๋ค ...), times / axisJS์ ์์ต๋๋ค.
http://times.github.io/axisJS/ ์์ ์จ๋ผ์ธ์ผ๋ก ์ฌ์ํ ์ ์์ต๋๋ค.
PDF๋ ๋งค์ฐ ์ ์ฉํ๋ฉฐ PR์ ์ดํด๋ณผ ๊ฒ์ ๋๋ค. ์ธ์ ๊ฐ๋ ๊ถ๊ทน์ ์ผ๋ก axisJS์ ๋ํ ์ธ์ ํ์์ด ํ์ํฉ๋๋ค ...
์ค ์์ฐ, ๋น์ ์ ์ค์ ๋ก ์ด๊ฒ์ ์ํด ์ ์ฒด GUI๋ฅผ ๋ง๋ค์์ต๋๋ค. ๋ฐฉ๊ธ ๋ด๋ณด๋ด๊ธฐ์ํ ๋ช ๋ น ์ค ๋๊ตฌ๋ฅผ ๋ง๋ค์์ต๋๋ค. ์์ฃผ ๋ฉ์ง๋ค.
์ด๊ฒ์ ์ข ๊ฒฐ๋๋ ๊ฒ๋ณด๋ค์ด ์์ ์์ ์ง์ ๋ฌธ์ ์ ๊ฐ๊น์ต๋๋ค. @yuvii ์ CLI ๋๊ตฌ๋ ์ ๋ง ๋ฉ์ง๊ณ ์ ์ฉํฉ๋๋ค. ์ด์ ๋ํด ๊ทธ์ pull request, # 555์ ์ง์ ๋ํ ํด ๋ณด๊ฒ ์ต๋๋ค.
์ฌ๊ธฐ์ ๋์ฐฉํ๋ ์ฌ๋์ @gonsakon ์ ๊ตฌํ์ด Angular๋ก ์ํ ํ ์์ ์ ์ํํ์ง๋ง jQuery๋ฅผ ์ฌ์ฉํ๋ฉด ๋ด๊ฐ ์ ๊ณต ํ ๊ฒ๋ณด๋ค ๋ ์ฌ์ด ์์ ์ผ ์ ์์ต๋๋ค!
์๋
, ๋๋ c3 ์ฐจํธ, ์ฆ SVG๋ฅผ ์ด๋ฏธ์ง๋ก ๋ณํํ๋ ค๊ณ ํ์ง๋ง ์๋ํ์ง ์์ต๋๋ค.
์ธ๋ถ CSS ์ธ c3.css๊ฐ ์ ์ฉ๋์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
SVG์ ์ธ๋ถ CSS๋ฅผ ์ด๋ป๊ฒ ์ ์ฉ ํ ์ ์์ต๋๊น?
@ raj-mehta C3 Google ๊ทธ๋ฃน ์ ๋ฌธ์ํ์ธ์.์ด ๋ฌธ์ ๋ ๋ซํ ๋ฌธ์ ์ด๋ฉฐ ์ง๋ฌธ์ ๋ํ ์ธ๋ถ ์ ๋ณด๊ฐ ๋ถ์กฑํ์ฌ ์ค์ง์ ์ผ๋ก ๋์์ ์ค ์ ์์ต๋๋ค.
๋๋๋ ค ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค.
๋ค์ svg๋ฅผ ์ฌ์ฉํ๊ณ ur sample.html์์ ์ฌ์ฉํ์ง๋ง ๋ธ๋ผ์ฐ์ ์ ์ฐจํธ์ canvg์์ ๋ณํ ๋ ์ด๋ฏธ์ง๊ฐ ์ผ์นํ์ง ์์ต๋๋ค.
์ฌ๋ถ์ ๋์ ์ถ ๋ง๋๊ฐ์๋ raj-mehta์ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด๊ฒ์ ๋ํ ํด๊ฒฐ์ฑ ์ ์ฐพ์์ต๋๊น?
๋ฌธ์ ๋ ๋ด๋ณด๋ผ ๋ ์ธ๋ผ์ธ ์คํ์ผ ๋ง ์ค์ํ๋ค๋ ๊ฒ์ ๋๋ค. ์ถ๊ฐ ์คํ์ผ (์ : ์ด์ํ ๊ฒ์ ์ ๋ฐฐ๊ฒฝ์ ํ์ํ๋ ์ ๊ทธ๋ํ์ ๊ฒฝ์ฐ fill-opacity : 0)์ ํฌํจํ๋๋ก ๋ก์ปฌ ๋ฒ์ ์ c3๋ฅผ ์์ ํ์ผ๋ฉฐ ์ด๋ฏธ์ง๊ฐ ์์๋๋ก ๋์ต๋๋ค.
@aendrew ์ด http://times.github.io/axisJS/#/ ์ด ํํ ๋ฆฌ์ผ์ด ํ์ํฉ๋๋ค.
๋ด ๋ชจ๋์ ์ฌ์ฉํ์ฌ c3 ์ฐจํธ์ PNG ๋ด๋ณด๋ด๊ธฐ ๊ธฐ๋ฅ์ ์ถ๊ฐ ํ ์ ์์ต๋๋ค. https://github.com/annatomka/ng-c3-export
์๋ ํ์ธ์ @annatomka https://github.com/annatomka/ng-c3-export whith ๋น๋๊ธฐ๋ก๋ ๊ทธ๋ํ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๊น? ๋ด ์ฝ๋ :
app.controller ( "ChartController", function ($ http) {
$ http.get ( 'URL').
success (function (data, status, headers, config) {
c3.generate ({
bindto : "# ๋ด ์ฐจํธ",
๋ฐ์ดํฐ : {
์ ํ : 'ํ์ด',
์ด : [
[ '์ํ', 30],
[ '์ํ 2', 200]
]
}
});
}).
error (function (data, status, headers, config) {
๋๋ฒ๊ฑฐ;
});
-์ฐจํธ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๊ทธ๋ฆฌ์ง ๋ง ๋ค์ด๋ก๋ ์์ด์ฝ์ด ์์ต๋๋ค.
@annatomka ํ๋ฅญํ ๋ชจ๋์ด์ง๋ง ๋น๋๊ธฐ ๋ก๋ฉ ๊ทธ๋ํ์๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๊ทธ๋ํ๋ฅผ ๋ค์ ์์ฑํ๋ฉด ๋ค์ด๋ก๋ ๋ฒํผ์ด ์ฌ๋ผ์ง๋๋ค.
@annatomka ๋๋ฌด ์ข์์! ๋๋ ๋น์ ์ ๋ชจ๋์ ๋ค์ Angular ํ๋ก์ ํธ์์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค!
@annatomka +1
@ morales-franco @johnmarkli ๋น๋๊ธฐ ๋ก๋ฉ ๋ฌธ์ ๋ฅผ ์์ ํ์ต๋๋ค. ์ ๋ฒ์ (0.1.5)์์ ์๋ํด ๋ณผ ์ ์์ต๋๋ค. ๋ช ๊ฐ์ง ์๋ ์ถ๊ฐํ์ต๋๋ค.
@annatomka ๋ด ์ํ ์ฐจํธ๊ฐ ๋์ต๋๋ค.
CSS์์ ๋ด๊ฐ ๋ฌด์์ ๋์น๊ณ ์์ต๋๊น?
@annatomka ํ๋ฅญํ ๋ชจ๋์ด์ง๋ง ๋ธ๋ผ์ฐ์ ์๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. Internet Explorer์์ ๋ชจ๋์ด ์๋ํ์ง ์์ต๋๋ค. ๋ฒ๊ทธ๋ฅผ ๊ณ ์น ์ ์์ต๋๊น? ๊ฐ์ฌ
์ฌ๊ธฐ ์ง์ฌ์ผ๋ก ์ฌ๋ฌ๋ถ. annatomka / ng-c3-export์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ
์ ๊ธ ์ค๋ ๋.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ด ๋ชจ๋์ ์ฌ์ฉํ์ฌ c3 ์ฐจํธ์ PNG ๋ด๋ณด๋ด๊ธฐ ๊ธฐ๋ฅ์ ์ถ๊ฐ ํ ์ ์์ต๋๋ค. https://github.com/annatomka/ng-c3-export