티스토리 뷰

개요

 

* jupyter lab Google Colaboratory 이용하여 실습해보았음

 

Lidar Sensor 물체를 스캔하여 얻은 높이 데이터를 csv 형태로 가지고 있다.

- 가로 16채널, 세로는 물체의 길이만큼

- 높이는 물체의 높이

데이터를 heatmap 으로,표현해보고, plotly 이용하여 3d 표현해보자

 

데이터 준비

 

- gist 올려둔 csv 파일을 다운로드 받자

- 2개의 파일을 준비해 두었음 (heatmap_01.csv, heatmap_02.csv

 

!wget https://gist.githubusercontent.com/nicewook/2e5b0f785320cd41dbfdf0fd95275bbd/raw/58122234d38cbed43fb8a7bf8dacfc9f52807504/heatmap_01.csv

!wget https://gist.githubusercontent.com/nicewook/4b8680388bd7b8923b30c7463e432ad2/raw/3f184f45f488fbaf0b73d04312e494d0c54bd400/heatmap_02.csv

 

 

heatmap 으로 표현해보기

 

* heatmap_02.csv 이용해보겠음

 

!wget https://gist.githubusercontent.com/nicewook/4b8680388bd7b8923b30c7463e432ad2

/raw/3f184f45f488fbaf0b73d04312e494d0c54bd400/heatmap_02.csv

 

준비한 데이터 파일을 다운로드 받는다.

import pandas as pd

판다스를 이용한다.

df = pd.read_csv('heatmap_02.csv', header=None, engine='python')

다운로드 받은 heatmap_02.csv 읽는다. 이때,

- 헤더가 없이 바로 데이터가 시작되며

- engine='python' 여기선 불필요하지만, 해두면 한글 깨짐을 막아준다.

df.head()

대략의 데이터 모양과 값들을 보자

import seaborn as sns

import matplotlib.pyplot as plt

%matplotlib inline

 

hm = sns.heatmap(df, annot=False)

hm.get_figure().savefig("heatmap_02.png")

seaborn 패키지를 이용한다.

다른 필요없이 sns.heatmap(df, annot=False) 명령만으로 이미지를 있다.

생성된 heatmap .get_figure().savefig("filename.png") 명령으로 저장할 있다.

 


 

 

 

plotly 3d 표현해보기

 

무료료 사용할 있으며, plotly 가입하여 계정과 API Key 만들어야 한다.

사이트: https://plot.ly/

 


 

 

노트북에 아래와 같이 넣어주기만 하면 3D 결과물을 있다.

- 회전, 크기조절이 가능하다.

 

import plotly

plotly.tools.set_credentials_file(username='YOUR_USERNAME', api_key='YOUR_KEY')

 

import plotly.plotly as py

import plotly.graph_objs as go

위에서 얻은 Username, API Key 넣어준다.

# pd.DataFrame 의 값을 data에 넣어준다

# .as_matrix() -> .values 로 바꿔주면 된다. ()를 쓰지 않는것에 주의

data = [

    go.Surface(

        #z=distance_df.as_matrix()

        z=df.values

    )

]

보여주고픈 판다스 DataFrame data 변환해준다.

 

- .as_matrix() deprecated 되었으니

- .value 사용하자

# Layout 을 설정해준다

layout = go.Layout(

    title='car',

    autosize=False,

    width=700,

    height=700,

    margin=dict(

        l=65,

        r=50,

        b=65,

        t=90

    )

)

전체적인 Layout 설정해주고

# 그리고 생성

fig = go.Figure(data=data, layout=layout)

py.iplot(fig, filename='elevations-3d-surface')

생성하면 된다.

1) 회전, 크기 조절이 가능하며

2) 웹상에서 접근할 수도 있다. (공유하기 좋다)

 


반응형
반응형
잡학툰 뱃지
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
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
글 보관함