์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- macbook
- nodejs
- AWS EC2
- fastapi
- Troubleshooting
- error
- axios
- github
- ngrok
- MUI
- EC2
- Java
- TypeScript
- 500
- MongoDB
- Github Actions
- RDS
- deploy
- webhook
- python
- React
- Express
- AWS
- javascript
- Spring
- docker
- linux
- springboot
- Jenkins
- js
- Today
- Total
BEAT A SHOTGUN
[Recharts] bar ๋ฅผ floating bar ๋ก ๋ง๋ค์ด ์ง์ง ์ฃผ์ ์ฐจํธ์ฒ๋ผ ๊ทธ๋ฆฌ๊ธฐ ๋ณธ๋ฌธ
[Recharts] bar ๋ฅผ floating bar ๋ก ๋ง๋ค์ด ์ง์ง ์ฃผ์ ์ฐจํธ์ฒ๋ผ ๊ทธ๋ฆฌ๊ธฐ
thovy 2022. 11. 14. 20:50์์ ๐
์ฃผ์ ์ฐจํธ๋ฅผ ๊ทธ๋ฆฌ๋๋ฐ "์ํ๊ฐ"๋ก๋ง ํํ๋๋ค.๐
๋ด๊ฐ ์ํ๋ ์ฐจํธ ๊ทธ๋ฆผ์ ์ด๊ฒ ์๋์ผ.
๋ด๊ฐ ์ํ๋ ์ฐจํธ๋ ์ง์ง ์ฃผ์ ์ฐจํธ ์ฒ๋ผ
ํํ๊ฐ
์ํ๊ฐ
๋ฅผ ๊ฐ์ง๊ณ ๋ง๋์ ๊ธธ์ด๋ฅผ ์กฐ์ ํ๊ณ ์ถ๋ค.
๋ด๊ฐ ๊ฐ์ ธ์จ ๋ฐ์ดํฐ(ํ๊ตญํฌ์์ฆ๊ถ ์ฃผ์ API)์ ์ด๋ ๊ฒ ๋ชจ๋ ๊ฒ ๋ด๊ฒจ ์๊ธฐ ๋๋ฌธ์
์ฃผ๊ฐ ์๋์ชฝ ๋ฐ๋ฅ์๋ ๊ฑฐ๋๋๊น์ง ํํํ ์ ์๋ค.
์ฌ์ค ๊ฑฐ๋๋์ ํ์ํ๋ ๊ฒ์ ์ด๋ ต์ง ์๋ค.
๊ฑฐ๋๋์ ๋ฐ๋ฅ๋ถํฐ ์ฌ๋ผ์ค๋ฉด ๋๋ ๊ทธ๋ฅ ๋ง๋๊ทธ๋ํ
๊ธฐ ๋๋ฌธ์ <Bar/>
๋ฅผ ํ๋ ๋ ๋ฃ๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
๊ฒฐ๊ตญ ๋ด๊ฐ ์ํ๋ ๊ฑด ๐ค
ํํ๊ฐ
์ํ๊ฐ
๋ฅผ ์ด์ฉํด ๋ง๋๋ฅผ ๊ณต์ค์ ๋์ฐ๊ธฐfloating
์ ์ผ ๋๋น ๋ถํธ
๋ฅผ ์ด์ฉํด ๋ง๋๊ทธ๋ํ ์๊น ๋ฐ๊พธ๊ธฐ- ๋ฐ๋ฅ์
๊ฑฐ๋๋
๋ง๋ ํ์ํ๊ธฐ
๐ ๋ง๋ค์ด๋ณด์
๐โโ๏ธ 1๋ฒ๋ถํฐ ๋ง๋ค์ด๋ณผ๊น์ค.
dataKey
๊ฐ์๋String
orNumber
๋ฅผ ๋ฃ์ ์ ์๋ค.
ํ์ง๋งLineChart
์์๋function
๊น์ง ๊ฐ๋ฅํ๋ค.function
์ ๋ฃ์ด๋ณด์.<BarChart data={stockData} width={500} height={300}> <CartesianGrid strokeDasharray="3 3"/> <XAxis dataKey="stck_bsop_date"/> <YAxis /> <Tooltip/> <Bar dataKey={ (data)=>{ const range = [data.stck_hgpr, data.stck_lwpr] return range}} fill = "#E94560" /> </BarChart>
์ฐ๋ฆฌ๊ฐ ๋ฐ์์จ ์ฃผ๊ฐ data ์ธ
stockData
๊ฐ<BarChart data={stockData}>
๋ก ๋ค์ด๊ฐ์<Bar>
์ ์๋dataKey
๋ก ํ๋์ฉ ๋ฟ๋ ค์ง๋ค.
- ๊ทธ๋ฅ
String
์ผ๋ก ๋ณด๋ด๊ธฐ ์ํด์๋dataKey="stck_hgpr"
์ด๋ผ๊ณ ์ฐ๋ฉด๋๋ค. ๊ทธ ์์ ์๋ ๊ฐ์ ๋ฟ๋ ค์ฃผ๋ ๊ฑฐ๋ผ๊ณ ์๊ฐ๋จ.
ํ์ง๋ง ๋๋ ๋ฒ์๋ก ๊ทธ๋ฆฌ๊ณ ์ถ์๊ธฐ ๋๋ฌธ์ ๋ฆฌ์คํธํํ๋ก ๋ณด๋ด์คฌ์ด์ผํ๋ค.
Barchart API Docs
Barchart API Docs Exam
์ด๊ฒ์ฒ๋ผ ๋ณด๋ด์ค์ผํ๋๋ฐ, ์ฐ๋ฆฌ๊ฐ stockData
๋ฅผ ๋ฐ์์ค๋ฉด ๋ฐ๋ก ๊ฐ์ด ์ ํด์ง๋ฏ๋ก ํ์ดํํจ์๋ฅผ ์ด์ฉํด๋ดค์ง!
๊ฒฐ๊ณผ
)
๋ฐ๋~!
์ฌ์ฌํ์ง๋ง ์ํ๋ ๊ฒฐ๊ณผ๊ฐ ๋์๋ค.
๐โโ๏ธ 2๋ฒ์ ๋ง๋ค์ด๋ณผ๊น์ค.
์ฐจํธ ๊ธฐ๋ฅ๋ง๋ค ์๊น ๋ฐ๊พธ๊ธฐ๋ Custom
์์ ํํธ๋ฅผ ๋ฐ์ ์ ์๋ค.
)
์ด๋ ๊ฒ <Bar>
์ปดํฌ๋ํธ ์์ชฝ์ <Cell>
์ปดํฌ๋ํธ๋ฅผ ํ๋ ๋ง๋ค์ด์ ๊ฑฐ๊ธฐ์ path
๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค.
๋ด๊ฐ ์ฒ์์ ์๊ฐํ๋
solution 1 โ
<Bar>
์ปดํฌ๋ํธ์ ์์ฑ๊ฐ์ผ๋ก fill
์ด ์์ผ๋ ๊ฑฐ๊ธฐ์ ์ ์ด์ฃผ๋ฉด ๋์ง ์์๊น ํด์
<BarChart data={stockData} width={500} height={300}>
<CartesianGrid strokeDasharray="3 3"/>
<XAxis dataKey="stck_bsop_date"/>
<YAxis />
<Tooltip/>
<Bar
dataKey={
(data)=>{
const range = [data.stck_hgpr, data.stck_lwpr]
return range}}
fill = {(stockData.prdy_vrss_sign > 3) ? "#006DEE" : "#E94560"}
/>
</BarChart>
์ด๋ ๊ฒ ์ ์๋๋ฐ
๊ทธ๋ฌ๋ฉด ๊ทธ๋ฆผ์ด ๊ทธ๋ ค์ง์ง ์๋๋ค.
solution 2 โ
๊ทธ๋์ dataKey
์ฒ๋ผ ํจ์๋ฅผ ๋ฃ์ด๋ณผ๊น.
<Bar
...
fill={(e)=>{
const a = e.stck_hgpr;
return a
}}
/>
ํ๋ฉด
solution 3 โ
๊ทธ๋์ ์ดํด๋ณธ Docs ์ Custom ๋ถ๋ถ.
<Cell>
์ ์ด์ฉํด๋ณด์!
<Bar
...
>
{stockData.map((data)=>(
<Cell fill={(data.prdy_vrss_sign > 3) ? "#006DEE" : "#E94560"}/>
))}
</Bar>
๋ฐ๋!
)
์ฝ๋ค ์ฌ์~ (์๊น๋ง ์ดํ์ก์๋จน์)๐คฃ
๐จโ๐ป 3๋ฒ์ ๋ง๋ค์ด๋ณผ๊น์ค.
์๋ก ์ถ๊ฐํ๋ ค๊ณ ํ๋ Bar
์ปดํฌ๋ํธ์ ๊ฑฐ๊ธฐ์ ๋ฐ์ดํฐ ๋ฅผ ์ถ๊ฐํด์ฃผ์
๐ ์ฐจํธ ์กฐํฉ
๋ค์ํ ํํ์ ์ฐจํธ๋ฅผ ์กฐํฉํ๊ณ ์ถ๋ค๋ฉดComposedChart
๋ฅผ ์ฌ์ฉํด์ผํ๋ค
์๋ฅผ๋ค๋ฉด ํ๋๋Bar
, ๋ค๋ฅธ ํ๋๋Line
chart ๋ฅผ ์ด์ฉํ๋ ค๋ฉดComposedChart
๋ฅผ ์ด์ฉํ์!
๊ทธ๋ฌ์ง ์์ผ๋ฉด ํด๋น Chart ์ ๊ฐ์ ๊ฒ๋ง ํ์๋๋ค!
๐์ฆ,BarChart
๋ด๋ถ์ Bar ์ Line ์ ๋ฃ์ผ๋ฉด Bar ๋ง ํ์๋๊ณ Line ์ ํ์๋์ง ์๋๋ค.
ํ์ง๋งComposedChart
๋ด๋ถ์ Bar ์ Line ์ ๋ฃ์ผ๋ฉด ๋ ๋ค ํ์๋๋ค!
๋๋ Bar ํํ๋ง ์ฌ์ฉํ ๊ฑฐ๊ธฐ ๋๋ฌธ์ BarChart ๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ ๊ฑฐ๋ค.
<BarChart>
...
<Bar
dataKey={
(data)=>{
const range = [data.stck_hgpr, data.stck_lwpr]
return range}}
fill= "#E94560"
>
{stockData.map((data)=>(
<Cell fill={(data.prdy_vrss_sign > 3) ? "#006DEE" : "#E94560"}/>
))}
</Bar>
<Bar dataKey={(e)=>((e.acml_vol)/10000)}/>
</BarChart>
data ์ ์์ด ๋๋ฌด ๋ง์์ ๋ฐ์ดํฐ์์ 10000์ ๋๋ ์คฌ๋ค.
๋๋์ง ์์ผ๋ฉด...
๊ฑฐ๋๋ ๋ฐ์ดํฐ๋ง ํ์๋๋ ๊ฒ ์๋๊ณ ์ฃผ๊ฐ ๋ฐ์ดํฐ๋ ํ์๋ ๋๋๋ฐ ๋๋ฌด ์์์ ์๋ณด์ด๊ฒ ๋๋ค..
๊ฑฐ๋๋์ ๋จ์์ ์ฃผ๊ฐ์ ๋จ์ ์ฐจ์ด๊ฐ ๋๋ฌด ํฌ๋๊น ์ด๋ ๊ฒ ๋๋ค.
๊ทธ๋์ ์ง์ง๋ค์
์ฐจํธ๋ฅผ ๊ตฌ๋ถํด๋๋๋ณด๋ค...
ํ์ง๋ง ๋ฌธ์ ๊ฐ ๋ ์๋ค
๊ณ ์ ์ ์ผ๋ก 10000 ์ ๋๋๋ค๋ณด๋ ๊ฑฐ๋๋์ด ์ ์ ๊ณณ๋ค์ ๋....
๋๋ฅผ ๋๋ฌด ํ๋ค๊ฒ ํ๋ค...
์ด๊ฑด ๊ฐ๋จํ๊ฒ for ๋ฌธ์ผ๋ก ํด๊ฒฐํ ์ ์์ ๊ฑฐ ๊ฐ๋ค.
์ ... ๊ทผ๋ฐ ๊ท์ฐฎ์๋ฐ...
์ ๊น ํ์จ๋ณผ๊น.
))
๋ค์ํ ๋ฒ์์์๋ ๋น๊ต์ ์์ ์ ์ผ๋ก ์ ํ์ํด์ค๋ค.
๋ฌผ๋ก
์์ธ๋ ์๋ ๊ฑฐ ๊ฐ๋ค.
๋
๋ญ ์ด์จ๋ ๋ด๊ฐ ์ํ๋ ์ฐจํธ๋ก ์๋ฒฝํ ๊ตฌํ๋ ๊ฑด ์๋์ง๋ง, ๊ทธ๋ญ์ ๋ญ ๋ง์กฑ์ค๋ฌ์ด ์ฐจํธ๊ฐ ๋์๋ค!
๊ณ ์ํ๋ค!
์ค๋์ ์ฌ๊ธฐ๊น์ง
์ถ๊ฐ
Docs ๋ฅผ ์ฝ์ด๋ณด๋ค SyncId
๋ผ๋ ๊ฑธ ๋ฐ๊ฒฌํ๋ค.
๐ฎ?!!
)
๐ฒ!!!!!!!
์๋ ๊ทธ๋ผ ํ๋์ Chart ์์ ๋ ๊ฐ์ Bar ๋ก ํํํ ๊ฒ ์๋๋ผ ๋ ๊ฐ์ Chart ๋ฅผ Synchronize
์ํจ ๊ฑฐ๊ตฌ๋!!
๋ ๊ฐ์ Chart ๋ฅผ Synchronize ํด ์ง์ง ์ฃผ์ ์ฐจํธ์ฒ๋ผ ๋ง๋ค์ด๋ณด์
๋ ๊ฐ์ Chart ๋ฅผ Synchronize ํด ์ง์ง ์ฃผ์ ์ฐจํธ์ฒ๋ผ ๋ง๋ค๊ธฐ