조회 수 1423 추천 수 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
번호 분류 제목 글쓴이 날짜 조회 수
63 코드 폰트를 자동 설치하는 코드 1 네모 2018.07.16 830
62 코드 파이썬을 이용한 텔레그램 새 글 알림 (허접합니다) 4 이니스프리 2017.11.19 2377
61 코드 파이선 셸에서 실행하면...? 3 제르엘 2018.07.22 499
60 코드 클라이언트단에서 이미지 리사이징 6 file 네모 2018.05.06 1078
59 코드 컴퓨터의 uuid 얻기 5 title: 황금 서버 (30일)humit 2018.01.28 1099
58 코드 잘못 쓰면 컴퓨터가 날아가는 코드 29 제르엘 2018.07.08 964
57 코드 유튜브에 약간의 기능을 추가 해주는 크롬 확장 프로그램. 11 file Hanam09 2018.01.26 942
56 코드 엑셀파일 불러서 히스토그램 그려주는 함수 국내산라이츄 2017.08.03 724
» 코드 엑셀 읽어서 그래프 그려주는 함수 1 국내산라이츄 2017.08.03 1423
54 코드 아주 간단한 기초 C++ 6 제르엘 2018.04.21 477
53 코드 세린서버에서 시도중인 백업 스크립트 입니다. 4 NoYeah 2017.06.27 744
52 코드 새 글 자동 댓글 스크립트 (AutoHotkey) 9 이니스프리 2017.11.26 3457
51 코드 사이트 서버 이전 (또는 미러링 사이트 구축) 쉽게하는 스크립트 1 NoYeah 2018.01.14 858
50 코드 브라우저 언어에 따라 다른 폴더를 사용하는 PHP 코드 4 file 네모 2017.10.10 639
49 코드 미완성 받아쓰기 (C) title: 대한민국 국기gimmepoint 2018.04.20 380
48 코드 매우 특이한 버그 9 title: 대한민국 국기gimmepoint 2018.06.05 569
47 코드 도박 중독자를 위한 광고 차단 규칙 file 제르엘 2020.08.21 292
46 코드 내가 만든 함수 모음집 2 title: 대한민국 국기gimmepoint 2018.05.12 379
45 코드 내가 만든 함수 모음집 4 title: 대한민국 국기gimmepoint 2018.05.08 382
44 코드 내가 만든 사칙연산 계산기 title: 대한민국 국기gimmepoint 2018.05.11 515
Board Pagination Prev 1 2 3 4 Next
/ 4