파이썬/그래프 그리기

python(vscode)/holoviews/다중그래프/ subplot/nan/결측치/grid/label/size

gongdol 2024. 3. 24. 20:07
300x250

1. 예제 작성

 

 

2. 코드작성

   1) assume_missing  -true : 결측치를 소수점이있다고 봐준다.

import time
import dask.dataframe as dd
import numpy as np
import pandas as pd
import holoviews as hv
from holoviews import dim, opts
from bokeh.plotting import show

start = time.time()
#1-change. dask 데이터 만들기
filename = r"C:\Users\Documents\test122.csv" #파일명 작성
data = dd.read_csv(filename, assume_missing = True)        #data 변수에 엑셀 데이터를 넣는다, sample은
# data1 = data.astype(np.float16)       #용량을 줄여준다.
data1 = data
col1 = list(data.columns) # 첫번째 칼럼을 col1 변수에 넣는다.
print(data1.compute())
hv.extension('bokeh')

plot_list = {}
plot_list[1] = [col1[1],col1[3]]
plot_list[2] = [col1[5]]

for idx, item in enumerate(plot_list.keys()):

    for id, name in enumerate(plot_list[item]):
        print(idx, id, col1.index(name))
        i = col1.index(name)
        plot_multiple = hv.Curve(data1[[col1[i-1],col1[i]]].compute().rename(columns={col1[i-1]:'ms'})) # x 축 통일해줘야함.
        if id == 0:
            plot_multiple_f = plot_multiple
        else:
            plot_multiple_f = (plot_multiple_f * plot_multiple).opts(opts.Curve(axiswise=False))

    plotadd = plot_multiple_f
    if idx == 0:
        plot_f = plotadd
    else:
        plot_f = (plot_f + plotadd).opts(opts.Curve(axiswise=False)) # 곱하기 하면, 같은 그래프에 들어가고, 더하면 subplot 한다.
             
show(hv.render(plot_f))

 

3. 결과

  1) 그래프 차트 곱하면 다중그래프, 더하면 subplot 오른쪽에 한개의 그래프가 더생긴다. 

 

 

 

 

3. 추가 코드 

 레전드 추가, 그리드 추가, 그래프 크기 추가 

import time
import dask.dataframe as dd
import numpy as np
import pandas as pd
import holoviews as hv
from holoviews import dim, opts
from bokeh.plotting import show

start = time.time()
#1-change. dask 데이터 만들기
filename = r"C:\Users\Documents\test122.csv" #파일명 작성
data = dd.read_csv(filename, assume_missing = True)        #data 변수에 엑셀 데이터를 넣는다, sample은
# data1 = data.astype(np.float16)       #용량을 줄여준다.
data1 = data
col1 = list(data.columns) # 첫번째 칼럼을 col1 변수에 넣는다.
print(data1.compute())
hv.extension('bokeh')

print(data1[[col1[3],col1[0]]].compute())

plot = hv.Curve(data1[[col1[3],col1[0]]].compute())
plot1 = hv.Curve(data1[[col1[3],col1[1]]].compute())

plot = (plot+plot1).opts(opts.Curve(axiswise=False))
show(hv.render(plot))
print("dask time :", time.time() - start)

plot_list = {}
plot_list[1] = [col1[1],col1[3]]
plot_list[2] = [col1[5]]

for idx, item in enumerate(plot_list.keys()):

    for id, name in enumerate(plot_list[item]):
        print(idx, id, col1.index(name))
        i = col1.index(name)
        plot_multiple = hv.Curve(data1[[col1[i-1],col1[i]]].compute().rename(columns={col1[i-1]:'ms'}),label=col1[i]) # x 축 통일해줘야함.
        if id == 0:
            plot_multiple_f = plot_multiple
        else:
            plot_multiple_f = (plot_multiple_f * plot_multiple).opts(opts.Curve(axiswise=False))

    plotadd = plot_multiple_f
    if idx == 0:
        plot_f = plotadd
    else:
        plot_f = (plot_f + plotadd).opts(opts.Curve(axiswise=False, width=500, height=400, show_grid=True)) # 곱하기 하면, 같은 그래프에 들어가고, 더하면 subplot 한다.
       
show(hv.render(plot_f))

 

300x250