본문 바로가기
반응형

파이썬120

[파이썬 matplotlib] 그래프 선 종류 (linestyle) 주로 사용하는 선 종류는 아래 네가지입니다. plot 메소드 내부에 linestyle 옵션으로 설정합니다. - solid - dotted - dashed - dashdot 각각 그려보면 아래와 같습니다. import matplotlib.pyplot as plt import numpy as np import pandas as pd #데이터 생성 df1=pd.DataFrame({'X':[45,50,64,72,77],'Y':[155,165,177,187,177]}) #그래프생성 fig,ax=plt.subplots(2,2) ax[0,0].plot(df1['X'],df1['Y'],color='blue',linestyle='solid',marker='o') ax[0,1].plot(df1['X'],df1['Y'],c.. 2022. 3. 15.
[파이썬 matplotlib] 꺾은선 그래프 그리는 법 (라벨, 범위, 마커속성 설정) 꺾은선 그래프는 plot 함수에서 linestyle 옵션을 설정하여 그릴 수 있습니다. linestyle 옵션을 '-' 로 설정하면 됩니다. import matplotlib.pyplot as plt import numpy as np import pandas as pd #데이터 생성 df1=pd.DataFrame({'X':[45,50,64,72,77],'Y':[155,165,177,187,177]}) #그래프생성 plt.plot(df1['X'],df1['Y'],color='blue',linestyle='-',marker='o') #그래프 정보 설정 plt.xlim(40, 80) #x축 범위 plt.ylim(100, 200) #y축 범위 plt.xlabel('X') #x 라벨 plt.ylabel('Y') #.. 2022. 3. 15.
[matplotlib] 파이썬 한 화면에 여러 그래프 그리기 (subplots) mabplotlib 에서 화면을 분할하여 그래프를 그래는 메소드는 여러가지가 있습니다. 그 중 subplots 메소드로 그리는 방법을 알아봅시다. subplots 메소드를 사용하려면 두가지를 알아야 합니다. - Figure - subplot figure 는 그래프가 그려지는 화면입니다. subplot 은 그래프입니다. 한 figure 안에 여러개의 그래프를 그릴 수 있습니다. 그래프는 보통 ax 라고 이름붙입니다. figure 하나를 만들고 그래프 네개를 그려보겠습니다. 먼저 matplotlib 를 불러옵시다. import matplotlib.pyplot as plt subplots 메소드를 실행해봅시다. 2,2 는 화면을 2행2열로 분할하겠다는 의미입니다. plt.subplots(2,2) >>> plt.. 2022. 3. 15.
[파이썬 matplotlib] 그래프 종횡비 설정하기, 그래프 비율 설정하기 설명은 주석으로 대신합니다. 종횡비는 .set_aspect 메소드를 사용합니다. import pandas as pd import matplotlib.pyplot as plt #plot1 데이터 생성 df1=pd.DataFrame({'x':[100,150,200],'y':[100,150,200]}) #plot1 그래프 생성 ax1=plt.subplot(211) #화면을 2행1열로 나눈 것중 첫번째 ax1.plot(df1['x'],df1['y'],color='blue',linestyle='',marker='o') ax1.set_xlim(100, 200) #x축 범위 ax1.set_ylim(100, 200) #y축 범위 ax1.set_xlabel('Weight') #x 라벨 ax1.set_ylabel('Hei.. 2022. 3. 7.
[파이썬 matplotlib] 한 화면에 그래프 여러개 그리고 간격 설정하기 설명은 주석으로 대신합니다. import pandas as pd import matplotlib.pyplot as plt #plot1 데이터 생성 df1=pd.DataFrame({'Weight':[55,45,64,77,72],'Height':[155,165,177,187,177]}) #plot1 그래프 생성 plt.subplot(211) #화면을 2행1열로 나눈 것중 첫번째 plt.plot(df1['Weight'],df1['Height'],color='blue',linestyle='',marker='o') plt.xlim(50, 80) #x축 범위 plt.ylim(100, 200) #y축 범위 plt.xlabel('Weight') #x 라벨 plt.ylabel('Height') #y 라벨 plt.titl.. 2022. 3. 7.
[파이썬 matplotlib] 산점도 그래프 그리는 법 (라벨, 범위, 마커속성 설정) 설명은 주석으로 대신합니다. import pandas as pd import matplotlib.pyplot as plt #데이터 생성 df1=pd.DataFrame({'Weight':[55,45,64,77,72],'Height':[155,165,177,187,177]}) #boxplot 생성 plt.plot(df1['Weight'],df1['Height'],color='blue',linestyle='',marker='o') plt.xlim(50, 80) #x축 범위 plt.ylim(100, 200) #y축 범위 plt.xlabel('Weight') #x 라벨 plt.ylabel('Height') #y 라벨 plt.title("TITLE") #그래프 이름 #그래프 출력 plt.show() 출력 결과 2022. 3. 7.
[파이썬 판다스] 데이터프레임 상자수염그림 (그룹별) 판다스의 boxplot 메소드를 이용하여 상자수염그림을 그릴 수 있습니다. 아래 예시는 성별에 따른 키를 상자수염그림으로 그린 것입니다. import pandas as pd import matplotlib.pyplot as plt #데이터 생성 sr1=pd.DataFrame({'gender':['F','F','M','M','M'],'Height':[155,165,177,187,177]}) #boxplot 생성 myplot=sr1.boxplot(column=['Height'],by="gender") myplot.plot() #y축 범위 설정 plt.ylim(100, 200) #그래프 출력 plt.show() 2022. 3. 4.
[파이썬] STL을 평면으로 자르기 #8. 속도개선 2초대로 줄임 pyvista 쓰던걸 numpy-stl 모듈로 바꿨다. 속도가 2초대로 줄었다. time5=[] for i in range(5): import timeit time_start = timeit.default_timer() # 시작 시간 체크 import os import numpy as np from stl import mesh from skspatial.objects import Plane from skspatial.objects import Point from skspatial.objects import Line #STL 가져오기 ctl = mesh.Mesh.from_file('python_stl\CAT.stl') #STL 불러오기 #교점 찾기 inter_point=np.zeros(3) #교점이 저장될.. 2022. 2. 8.
[파이썬] STL을 평면으로 자르기 #7. 속도개선 4초대로 줄임 평면의 어느편에 있는지 판단하는걸 패키지 함수를 사용했었는데, 직접 계산하도록 수정했다. >>> time4 [4.5958613000002515, 4.686201099997561, 4.7097910000011325, 4.7155559999991965, 4.911541900000884] 4초대로 줄었다. 더 줄일 수 있을까. 2022. 2. 6.
[파이썬] STL을 평면으로 자르기 #6. 시간 잡아먹는 부분 확인 else 문을 지워봤는데 시간차이가 별로 없다. 아마 else 문에 걸리는 점들이 몇개 없어서 그런 것 같다. if문 자체를 빼봤는데 시간차이가 없다. 뭐지...여기서 비교연산 등을 수행하는건 시간이 거의 들지 않는다는 말인가. 평면의 어느 쪽에 있는지 구하는 코드를 지웠더니 시간이 2초대로 줄어든다. 아래는 시간변화다. >>> time3_original [16.10053549999975, 13.224060499999723, 14.326108700000077, 16.356680699999743, 13.758388700000069] >>> time3 [2.8779554000002463, 2.8111312999999427, 2.914083199999368, 2.9338815999999497, 2.833796.. 2022. 2. 6.
[파이썬] STL을 평면으로 자르기 #5. 속도개선 시도 (성공) if 문에서 계산 후 비교하는 것을 그냥 비교하는걸로 바꿨다. 시간이 약간 줄었다. >>> time2 [13.642363099999997, 11.509126199999997, 13.2013338, 17.86278129999998, 12.619769899999994] >>> time3 [10.019133699999998, 10.265788899999961, 10.640305100000091, 11.123026500000037, 11.977286100000015] 2022. 2. 6.
[파이썬] STL을 평면으로 자르기 #4. 속도개선 시도 왼쪽 코드를 오른쪽과 같이 바꿨다. 평면 어느 쪽에 있는지 여부를 계산하는 것을 처음에만 하고 변수에 넣었다. 시간이 오히려 늘었다. 큰 의미없는 차이다. >>> time [16.898227600000155, 17.11739409999973, 16.90786509999998, 16.87015599999995, 17.234067800000048] >>> time2 [17.96122940000032, 16.95500889999994, 17.137785200000053, 17.103367199999866, 17.54229200000009] 2022. 2. 5.
[파이썬] STL을 평면으로 자르기 #3. 속도개선 (20초 근처로 단축) 코드 실행속도를 개선하기 위해 for 문을 아래와 같이 수정해보았다. for i in range(ctl.n_cells-1): #교점을 찾는 for문 p1=ctl.cell_points(i)[0] p2=ctl.cell_points(i)[1] p3=ctl.cell_points(i)[2] if (pl.side_point(p1)+pl.side_point(p2))*pl.side_point(p3)==2 : pass else : if pl.side_point(p1)*pl.side_point(p2)==-1 : inter_point=np.vstack((inter_point,pl.intersect_line(Line.from_points(p1,p2)))) if pl.side_point(p1)*pl.side_point(p3)=.. 2022. 2. 5.
[파이썬] STL을 평면으로 자르기 #2. 코드 실행 시간 계산하기 생각보다 실행시간이 너무 오래걸려서 코드를 개선하며 시간을 단축시키려고 한다. 시간이 단축되는지 알려면 먼저 코드 실행시간을 측정해야한다. timeit 패키지를 사용한다. 시작한 시각을 측정하고, 종료 시각을 측정해서 그 차이를 구하면 소요시간이다. 아래와 같이 코드 맨 앞과 뒤에 입력하면 된다. import timeit time_start = timeit.default_timer() # 시작 시각 체크 import os import numpy as np import pyvista as pv from skspatial.objects import Plane from skspatial.objects import Point from skspatial.objects import Line #코드 실행시간 확인 #.. 2022. 2. 5.
[파이썬] 3차원 공간에 라벨 표시하기 (pyvista) 3차원 공간에 라벨을 표시하는 방법은 아래와 같습니다. 다양한 옵션 적용이 가능합니다. import pyvista as pv #라벨 위치 정의 x_label=pv.PolyData([0,0,0]) y_label=pv.PolyData([0,10,0]) z_label=pv.PolyData([0,20,0]) # 캔버스 정의 p = pv.Plotter() #라벨 그리기 p.add_point_labels(x_label, ["x"],point_color='yellow',text_color='red', point_size=20, font_size=40,render_points_as_spheres=True,always_visible=True,show_points=False) p.add_point_labels(y_labe.. 2022. 1. 18.
반응형