조회 수 1555 추천 수 0 댓글 1
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
라이선스 MIT

<배경>

역시 이것도 귀차니즘에 의해 만들어졌습니다... 

회사에서 SPR 분석을 하는데, 이 결과를 비교/분석할 때는 꺾은선 그래프(line plot)를 이용합니다. 

근데 엑셀로 변환해도 와 범위가 몇천초...... 이걸 언제 다 씌워서 그래프 그리고 이동하고...... 

 

귀찮아요. 너무 귀찮아요. 그래서 만들었습니다. 

 

<코드 1-샘플(가장 최근꺼)>

function extriplot(~,~,~)
path=input('경로를 입력해주세요. ','s'); 
name=input('파일 이름은?' ,'s'); 
graphname=input('그래프 이름은?' ,'s'); 
pathway=strcat(path,'\');
filename=strcat(name,'.xlsx');
label1=input('첫 번째 plot의 이름은?','s');
label2=input('두 번째 plot의 이름은?','s');
label3=input('세 번째 plot의 이름은?','s');
disp('일단 그래프를 그리려면 행렬을 먼저 만들어야 해. 끝이 어딘지만 입력해주면 알아서 집을게.');
    shx1='2'; %엑셀로 그래프 그림+시작점은 항상 2
    shx2=input('각 축의 끝부분은? ','s'); 
        sheetX=strcat('A',shx1,':','A',shx2);
        sheetY=strcat('B',shx1,':','B',shx2);
        sheetY2=strcat('C',shx1,':','C',shx2);
        sheetY3=strcat('D',shx1,':','D',shx2);
X=xlsread(strcat(pathway,filename),1,sheetX);
Y=xlsread(strcat(pathway,filename),1,sheetY);
Y2=xlsread(strcat(pathway,filename),1,sheetY2);
Y3=xlsread(strcat(pathway,filename),1,sheetY3);
    plot(X,Y,'color',[.47 .67 .19],'LineWidth',2);
    hold on
    plot(X,Y2,'color',[.92 .07 .23],'LineWidth',2);
    plot(X,Y3,'-.','color',[.5 .5 .5]); %reference channel 전용 설정입니다. 가급적이면 엑셀 파일의 D열에 reference channel을 올려주세요. 
xlabel('Time(sec)');
ylabel('Pix');
title(graphname);
legend(label1, label2, label3);

 

이거 아직 다 수정 안 된거예요. 버전도 두 개 있어요... 'ㅁ' 

 

<코드 2-합쳐버린 거>

function SLplot (~)
global pathway pathwayload shx1 %어 글로벌 이렇게 쓰는거였어? 
disp('이거 streptavidin하고 linker 한꺼번에 그려주는거야. 다른 그래프 그릴거면 다른 함수 써야되는거 알지? ');
pathway=input('경로를 부시죠. ','s');
pathwayload=strcat(pathway,'\');
SAfile='SA.xlsx';
Lifile='Linker.xlsx';
disp('좋아, 이제 행렬을 만들어볼건데... 각 행렬의 끝부분이 필요해. 엑셀 가서 쉬프트 컨트롤 아래화살표였나...그거 눌러도 되고, 따로 적어둔 게 있으면 더 좋고. ');
shx1='2';
SAshx2=input('streptavidin 축의 끝부분은? ','s');

        sheetSA1=strcat('A',shx1,':','A',SAshx2);
        sheetSA2=strcat('B',shx1,':','B',SAshx2);
        sheetSA3=strcat('C',shx1,':','C',SAshx2);
        sheetSA4=strcat('D',shx1,':','D',SAshx2);
SA1=xlsread(strcat(pathwayload,SAfile),1,sheetSA1);
SA2=xlsread(strcat(pathwayload,SAfile),1,sheetSA2);
SA3=xlsread(strcat(pathwayload,SAfile),1,sheetSA3);
SA4=xlsread(strcat(pathwayload,SAfile),1,sheetSA4);
Lishx2=input('Linker 축의 끝부분은? ','s');
        sheetLi1=strcat('A',shx1,':','A',Lishx2);
        sheetLi2=strcat('B',shx1,':','B',Lishx2);
        sheetLi3=strcat('C',shx1,':','C',Lishx2);
        sheetLi4=strcat('D',shx1,':','D',Lishx2);
Li1=xlsread(strcat(pathwayload,Lifile),1,sheetLi1);
Li2=xlsread(strcat(pathwayload,Lifile),1,sheetLi2);
Li3=xlsread(strcat(pathwayload,Lifile),1,sheetLi3);
Li4=xlsread(strcat(pathwayload,Lifile),1,sheetLi4);
disp('음. 범위는 됐고... 행렬도 OK. ');
%아나 함수 합치기 그지같네 ㅠㅠ 
disp('자, 이제 행렬을 만들었으니 그걸로 그래프를 그릴거야. streptavidin 먼저 해 줄게. ');
figure(1);
    plot(SA1,SA2,'color',[.27 .5 .7],'LineWidth',2);
    hold on
    plot(SA1,SA3,'color',[.52 .81 .47],'LineWidth',2);
    plot(SA1,SA4,'color',[.4 .2 .6],'LineWidth',2);
    xlabel('Time(sec)');
    ylabel('Pix');
    title('Streptavidin')
    legend('ch1','ch2','ch3','Location','southeast');
disp('streptavidin 완료! 다음은 링커~ ');
figure(2);
    plot(Li1,Li2,'color',[.27 .5 .7],'LineWidth',2);
    hold on
    plot(Li1,Li3,'color',[.52 .81 .47],'LineWidth',2);
    plot(Li1,Li4,'color',[.4 .2 .6],'LineWidth',2);
    xlabel('Time(sec)');
    ylabel('Pix');
    title('Linker')
    legend('ch1','ch2','ch3','Location','southeast');
disp('좋아, 이제 저장 한다.');
SAjpg=strcat(pathwayload,'SA.jpg');
Lijpg=strcat(pathwayload,'Linker.jpg');
saveas(figure(1),SAjpg);
saveas(figure(2),Lijpg);

 

<프로그램의 역사>

1. 귀찮아서 그냥 plot만 그리는 함수를 짰음

2. 축 라벨 붙이기 귀찮아서 라벨 추가

3. 그래프 선 일일이 바꾸기 귀찮아서 선 옵션 추가(그 뒤로 선 색깔은 쭉 고정) -여기서 셋 다 실선인 것과 하나는 점선인 것으로 분리

4. 엑셀파일 경로 뒤의 \랑 파일명 뒤의 확장자 고정(...) 역시나 사유는 귀찮아서. 

5. 그래프 레전드 입력 받아서 그리게끔 변경

6. 엑셀로 입력할 때 시발점은 항상 2이므로 고정 -파일명도 고정된 것들 아예 입력 때려박음(그래프 그릴 때 샘플 말고 그 전에 흘려주는 것들도 그리는데 그거 말하는겁니다) 

7. 샘플 흘리기 전에 그리는 그래프 함수 하나로 묶어버림(두 번 그리기 귀찮아서), 이 과정에서 그래프 범례를 우측 하단으로 위치 바꾸고 저장까지 알아서 되게끔 설정. (경로는 global로 때려박음)

아 참고로 샘플 그래프에도 이 기능 추가해야 하는데 지금 휴가라 안하고 있습니다. (...) 

 

뭔 기능이 죄다 귀찮아서 추가되냐 

 


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
18 코드 [아미나] Dropbox API를 이용한 이미지 호스팅 보드스킨 12 file 이니스프리 2019.07.13 1592
17 코드 [PyQt] sir.kr에서 스크랩한 게시글을 보여주는 윈도우앱 (검색 및 정렬 가능) 7 file 이니스프리 2019.08.09 1126
16 코드 [Python] PIL을 이용한 Animated GIF의 리사이징 file 이니스프리 2019.11.03 1316
15 코드 [Python] 싸이월드 미니홈피 백업 스크립트 1 이니스프리 2019.11.07 2446
14 코드 [JS] 클라이언트단 GET Parameter Hanam09 2019.11.16 656
13 코드 [파이썬] Requests를 사용한 네이버 카페 크롤링 - 일정수 이상의 리플이 달린 게시글만 텔레그램 알림 3 file 이니스프리 2019.11.17 4347
12 코드 [Python] Google Image Search 결과를 받아오기 file 이니스프리 2019.12.09 1187
11 코드 JavaScript에서 파이썬 문자열 처리 함수 중 하나 (바인딩)를 구현 7 Seia 2020.01.20 564
10 코드 Koa에서 자동으로 라우팅 채워주기 Seia 2020.01.22 662
9 코드 [Python] 네이버 실시간 검색어 3 title: 황금 서버 (30일)humit 2020.01.23 1321
8 코드 [Python] url 주소로부터 IP 주소 알아내기 title: 황금 서버 (30일)humit 2020.02.20 2223
7 코드 [Python/Telegram] Studyforus 알림봇 (댓글, 스티커 파싱) 7 file 이니스프리 2020.05.15 831
6 자료 [Autohotkey] 매분 정각에 전체화면을 캡쳐하는 스크립트 4 file 이니스프리 2020.05.22 1242
5 코드 [Python] 유튜브 영상을 다운받아 일정 간격으로 캡쳐하여 10장씩 merge하기 3 file 이니스프리 2020.05.27 1243
4 코드 도박 중독자를 위한 광고 차단 규칙 file 제르엘 2020.08.21 440
3 코드 [Python] 휴일지킴이 약국을 크롤링하여 Folium 지도에 마커로 표시하는 PyQt 윈도우 앱 7 file 이니스프리 2021.03.13 1254
2 코드 [Python-Gnuboard] 파이썬으로 구현한 그누보드 자동 글쓰기 함수 1 file 이니스프리 2021.04.08 1504
1 코드 AWSCLI, in a single file (portable, linux) 1 file Seia 2021.04.10 312
Board Pagination Prev 1 2 3 4 Next
/ 4