본문 바로가기
반응형

전체 글128

[파이썬 matplotlib] 그래프 마커 종류 (marker) 마커 설정은 plot 메소드의 marker 옵션으로 합니다. 대표적으로 사용하는 마커들은 아래와 같습니다. 그래프 이름이 마커설정 옵션과 같습니다. 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(3,3) ax[0,0].plot(df1['X'],df1['Y'],color='blue',linestyle='',marker='o',) ax[0,1].plot(df1['X'],df1['Y'],color='blue',linestyle='',marker='.'.. 2022. 3. 15.
[파이썬 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.
파이썬 한 화면에 여러 그래프 그리기 (add_subplot) mabplotlib 에서 add_subplot으로 그래프를 그릴 때 두가지를 알아야 합니다. - Figure - subplot figure 는 그래프가 그려지는 화면입니다. subplot 은 그래프입니다. 한 figure 안에 여러개의 그래프를 그릴 수 있습니다. 그래프는 보통 ax 라고 이름붙입니다. figure 하나를 만들고 그래프 네개를 그려보겠습니다. 괄호 안의 숫자 2,2,1 은 2행 2열로 화면을 분할하고 그 중 첫번째 칸이라는 뜻입니다. import matplotlib.pyplot as plt import numpy as np #figure 만들기 fig=plt.figure() #그래프 만들기 ax1=fig.add_subplot(2,2,1) ax2=fig.add_subplot(2,2,2) a.. 2022. 3. 14.
[파이썬 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.
반응형