<jupyter_start><jupyter_text>plotly 를 이용한 데이터 시각화![image.png](attachment:image.png)파이썬 판다스 시각화 라이브러리 matplotlib, seaborn 등이 있지만 plotly는 그래프는 그래프를 마우스 위로 가져가면 정보가 나온다. 기본 라이브러리보다 보기 더 편한것을 알수 있다. 그리고 일단 그래프가 깔끔하고 보기 좋다는 장점도 있다. 기존 판다스는 D3js등을 이용해 추가 작업을 해야 한다 그러나 plotly를 이용하면 더욱 간편하게 깔끔하고 보기 좋은 차트를 만들 수 있다는 큰 장점이 있다고 본다. 많은 차트가 있고 많은 설명이 필요하지만 지금은 plotly의 차트가 어떤지 한번 보도록 하자.지금부터 기본적인 plotly를 이용해보자. 좀더 자세한 사항은 링크를 참고하자. - [Plotly in Python](https://plotly.com/python/getting-started/overview)  1.plotly  1-1 라이브러리 불러오기<jupyter_code>import pandas as pd
import numpy as np
import chart_studio.plotly as py
import cufflinks as cf
cf.go_offline(connected=True) # 온라인이 아닌 상황에서 처리를 위한 명시 코드<jupyter_output><empty_output><jupyter_text>1-2 차트를 그리기 위한 난수 생성<jupyter_code>df = pd.DataFrame(np.random.rand(10, 4), columns=['A', 'B', 'C', 'D',])
df<jupyter_output><empty_output><jupyter_text>1-3 차트 확인<jupyter_code>cf.help()<jupyter_output>Use 'cufflinks.help(figure)' to see the list of available parameters for the given figure.
Use 'DataFrame.iplot(kind=figure)' to plot the respective figure
Figures:
	bar
	box
	bubble
	bubble3d
	candle
	choroplet
	distplot
	heatmap
	histogram
	ohlc
	pie
	ratio
	scatter
	scatter3d
	scattergeo
	spread
	surface
	violin<jupyter_text>1-4 Bra Chart bar chart 세부 정보를 보면 Bar mode에 group,stack,overlay 모델을 쓸 수 있다고 자세하게 나와있다. 그럼 직접 그려보고 확인해보자.  1-4-1 bar 세부정보<jupyter_code>cf.help('bar') # 세부 정보 확인
df.iplot(kind='bar')<jupyter_output><empty_output><jupyter_text>1-4-2 bar chart , mode = group<jupyter_code>df.iplot(kind='bar', barmode = "group")<jupyter_output><empty_output><jupyter_text>1-4-2 bar chart , mode = stack<jupyter_code>df.iplot(kind='bar',barmode='stack')<jupyter_output><empty_output><jupyter_text>1-4-3 bar chart , mode = overlay<jupyter_code>df.iplot(kind='bar', barmode = "overlay")<jupyter_output><empty_output><jupyter_text>1-4-4 bar chart, orientation="h","v"(방향)<jupyter_code>df.iplot(kind='bar' , orientation = "h")<jupyter_output><empty_output><jupyter_text>1-5 scatter,line chartscatter, line 두 차트는 같다고 보인다. scatter 대신 line로 그려도 동일한 차트가 그려진다. 그럼 눈으로 확인 하자<jupyter_code>cf.help('scatter')
#cf.help('line') # acatter 세부사항과 같이 나옴.<jupyter_output>SCATTER
Scatter plot
2D chart based in an x and y axis.
Can be a line chart (default) or a set of scatter points (markers)


Parameters:
===========
    bestfit : bool or list
        Displays a best fit line
        If list, then a best fit line will be generated
        for each trace key in the list
    bestfit_colors : dict or list
        Sets the color for each best fit line
        	{key:color} to set the color for each trace
        	[color1, color2...] to set the colors in the specified order
    categories : string
        Name of the column that contains the categories
    connectgaps : bool
        If True, then empty values are connected
    dash : string, list or dict
        Line style
        	string : applies to all traces
        	list : applies to each trace in the order specified
        	dict : {column:value} for each column in the dataframe
        values    :
        	solid
        	dash
        	dashdot
        	dot
    fill : bool
        Fills the trace (area)[...]<jupyter_text>1-5-1 scatter chart<jupyter_code>df.iplot(kind='scatter')<jupyter_output><empty_output><jupyter_text>1-5-2 line chart<jupyter_code>df.iplot(kind = 'line')<jupyter_output><empty_output><jupyter_text>1-5-3 scatter chart, mode = lines<jupyter_code>df.iplot(kind='scatter', mode = 'lines')<jupyter_output><empty_output><jupyter_text>1-5-3 scatter chart, mode = lines<jupyter_code>df.iplot(kind = "scatter", mode = 'markers')<jupyter_output><empty_output><jupyter_text>1-5-4 scatter chart, mode = markers + lines<jupyter_code>df.iplot(kind = "scatter", mode = 'markers + lines')<jupyter_output><empty_output><jupyter_text>1-5-5 scatter chart, fill  = True (선 채우기)<jupyter_code>df.iplot(kind = 'scatter', fill = True)<jupyter_output><empty_output><jupyter_text>2.Plot Styling  2-1 chart 타이틀 설정<jupyter_code>df.iplot(kind = 'bar', 
         xTitle = "X title", 
         yTitle = "Y title", 
         title = "title")<jupyter_output><empty_output><jupyter_text>2-2 세부 요소 변경<jupyter_code>layout = {
    'title':
        { 
            'text':'TEST', # 메인 타이틀 
            'font':{
                'family':'roboto', # 차트 타이틀 폰트 종류
                'size':25 # 차트 타이틀 폰트 크기
            },
            'x':0.5, # x축 기준으로(0~1) 타이틀 위치
            'y':0.9  # y축 기준으로(0~1) 타이틀 위치
        
        },
    'xaxis':{
        'showticklabels':True, # x축 레이블 표시
        'dtick':1, # x축 레이블 간격
        'title':{
            'text':'X axis', # x 축 타이틀 이름
            'font':{
                'size':10, # x축 타이틀 크기
            }
        }
    },
    'yaxis':{
        'showticklabels':False, # y축 레이블 표시
        'dtick':0.1, #y축 레이블 간격
        'title':{
            'text':'Y axis', # y 축 타이틀 이름
            'font':{
                'size':10 # x축 타이틀 크기
            }
        }
    }
}
df.iplot(kind = 'bar', layout = layout)<jupyter_output><empty_output><jupyter_text>3. 차트 테마  3-1 테마 확인 및 적용<jupyter_code>cf.getThemes()<jupyter_output><empty_output><jupyter_text>3-1-1 theme = ggplot<jupyter_code>df.iplot(kind = 'bar' ,theme='ggplot')<jupyter_output><empty_output><jupyter_text>3-1-2 theme = pearl<jupyter_code>df.iplot(kind = 'bar' ,theme='pearl')<jupyter_output><empty_output><jupyter_text>3-1-3 theme = solar<jupyter_code>df.iplot(kind = 'bar' ,theme='solar')<jupyter_output><empty_output><jupyter_text>3-1-4 theme = space<jupyter_code>df.iplot(kind = 'bar' ,theme='space')<jupyter_output><empty_output><jupyter_text>3-1-5 theme = white<jupyter_code>df.iplot(kind = 'bar' ,theme='white')<jupyter_output><empty_output><jupyter_text>3-1-6 theme = polar<jupyter_code>df.iplot(kind = 'bar' ,theme='polar')<jupyter_output><empty_output><jupyter_text>3-1-7 theme = henanigans<jupyter_code>df.iplot(kind = 'bar' ,theme='henanigans')<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.12626092804303968, 'fraction_numerical': 0.01664425016812374, 'mean_word_length': 3.67688679245283, 'pattern_counts': {'":': 0, '<': 99, '<?xml version=': 0, '>': 99, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '25', 'dir': 'jupyter-structured-clean-dedup', 'id': '243432', 'license': 'MIT', 'n_tokens_mistral': 2759, 'n_tokens_neox': 3006, 'n_words': 532, 'path': 'plotly.ipynb', 'repo_name': 'choiuikang/study', 'size': '5948'}