함수들의 자세한 arguments는 메뉴얼을 참고.


import matplotlib.pyplot (이외에도 많은 모듇들이 존재함)


1. 라벨붙이기.

pylab.xlabel('aaa')

pylab.ylabel('bbb')


2. 범위 정해주기

pylab.xlim(1, 100)

pylab.ylim(1, 100)


3. grid 보이기

pylab.grid('on' / 'off')


4. title 쓰기

pylab.title('aaaa')

'Study > Computer' 카테고리의 다른 글

Python으로 vector field그리기  (0) 2012.10.22
pylab과 pyplot의 차이?  (0) 2012.10.22
파일들을 gnuplot으로 한꺼번에 그리기  (0) 2012.10.03
python으로 중복된 tab없애기  (0) 2012.10.03
ssh 접속이 안될때  (0) 2012.09.21

메스메티카에서는 쉽게 할 수 있는데 WolframAlpha에서 Streamplot이나 vectorplot처럼 함수를 부르면 벡터장을 그려주지 않는다. 어쩌다 발견한건데 더 좋은방법이 있는지는 모르겠음.


1. http://www.wolframalpha.com 에 들어가서 vector plot 이라고만 검색한다.


2. 그럼 예제가 하나 나오는데 그 위에 보면 옵션박스들이 있다!

Vector field에 원하는 함수를 넣고 나머지에는 그릴 구간을 정해준다.


그리고 Enter를 치면 다시 그림을 그려준다!


이걸로 그려볼 수 있게 되었음ㅋ

'Study > Mathematics' 카테고리의 다른 글

levi-civita  (0) 2010.03.11


plot.py


꽤 많은 데이터들을 gnuplot으로 plot을 하고 싶을 때가 있다. 사실 python에서 matplotlib와 numpy로 싹 그릴수도 있지만 matplotlib에서 지원해주는 옵션을 자유자재로 다루기가 어려운 경우가 다반사다. 그렇다고 plot을 안할수는 없는 노릇이고... 


그냥 gnuplot의 스크립트 파일(e.g. plot.plt)을 만들어 실행시키는 방법을 써보자.


python이 빠르고 쉽게 문자열을 다룰수 있다는 강점이 있어 이를 사용했다.

(결국 python 관련 글....)


import glob


Flist = glob.glob('*.dat')


fwriteName = "plot.plt"

fw = open(fwriteName, 'a')


fw.write("set term png\n")    # 여기에 자신이 처음 입력할 terminal 옵션을 넣어주자


OldExt = 'dat'

NewExt = 'png'



for i in range(len(Flist)):

#Read file to know how many tab      # 데이터에서 tab이 여러번 먹혀있으면 엉망이되므로 주의!

fr = open(Flist[i], 'r')

StrContent = fr.readline()

TabCount = StrContent.count('\t')



fpngName = Flist[i].replace(OldExt, NewExt)


StrOutput = 'set output \'' + fpngName + '\'\n' 


fw.write(StrOutput)

LastCol = TabCount + 1


StrPlot = 'p \'./' + Flist[i] + '\' u ' + str(LastCol) + ':($3/$2) w p, \'\' u ' + str(LastCol) + ':($4/$2) w p\n'     #이런식으로 plot 옵션을 적어주면 된다. 근데 ' 등의 특수문자를 써야해서 꽤 주의해야 한다.

fw.write(StrPlot)


이를 실행시키면 한 디렉토리 안에 있는 dat파일을 모두 읽어 자신이 지정한 방법대로 그림을 그려 png로 저장해준다. 이 프로그램을 그대로 쓰기엔 조심할 점이 있는데, 


1    2    3        4    5

..   ..    ..       ..    ..


원래 데이터파일이 위와같이 tab이 여러번 존재한다고 해보자. gnuplot은 그래도 착하게 우리가 눈으로 보는 것과 같이 행을 구분해준다. using 1:4 와 같은 식으로 옵션을 써주어도 우리가 의도한대로 잘 실행된다.

하지만 위의 프로그램에서는 Column의 개수를 tab의 수로 가정했기 때문에 중복된 tab(위의 예제에선 3과 4 사이)를 없애주어야 한다. 없애는 방법은 아래 링크를 참조!

http://amornatura.tistory.com/62

'Study > Computer' 카테고리의 다른 글

pylab과 pyplot의 차이?  (0) 2012.10.22
matplotlib에서 자주쓰는 옵션들 정리(진행중)  (0) 2012.10.22
python으로 중복된 tab없애기  (0) 2012.10.03
ssh 접속이 안될때  (0) 2012.09.21
Ubuntu superuser 추가하기  (0) 2012.09.20


removetab.py


한 디렉토리 안에 있는 모든 데이터파일을 읽어서 중복된 tab을 없애고 다른 확장자로 저장하는 코드. python을 완전 잘하는 편이 아니어서 그냥 기초적인 방법으로 주욱주욱 만들었음...


import glob


Flist = glob.glob('*.txt')


OldExt = 'txt'

NewExt = 'dat'


for i in range(len(Flist)):

#Flist is str class !!!

fr = open(Flist[i], 'r')

fwriteName = Flist[i].replace(OldExt, NewExt)

fw = open(fwriteName, 'a')

print(Flist[i], "to", fwriteName)

ContentL = fr.readlines()

for j in range(len(ContentL)):

rowL = ContentL[j]

rowL = rowL.split('\t')

TabCnt = rowL.count('')

for k in range(TabCnt):

rowL.remove('')

#Change list to str with \t delimiter

rowStr = "\t".join(rowL)

fw.write(rowStr)


Class가 list인지 str인지에 따라 쓰이는 함수(method)가 다르기 때문에 꽤나 헷갈린다. 자주 다루지 않다보니 벌어지는일! 아무튼 이렇게 하면 중복된 tab을 없앨 수 있다. 


주의!!

용량이 큰 데이터파일들의 tab을 지워야 할 경우 이 프로그램은 컴터를 넉다운시킬수 있다. 왜냐면 readlines()로 그냥 한번에 주욱 읽어서 리스트로 저장하기 떄문이다... 메모리관리는 전혀 신경쓰지 않았는데 지금 다루는 데이터파일들 용량이 작은편이어서이다.ㅋㅋㅋ



2.5.6.pdf


Strogatz의 Nonlinear Dynamics and Chaos 교재의 연습문제 2.5.6번 - 구멍난 항아리(The leaky basket) - 문제의 답이다. 어려운 문제는 아닌데 구글링해보니 답이 안나와서 그냥 만들어봤다. 조교하다가 만든 답을 여기에 올려도 되나...


아무튼 내 풀이를 보고 내후년에 그대로 배끼는 학생이 있다면 100% 걸리는거닷ㅋㅋㅋㅋ


대충 풀어서 틀린 부분이 있다면 코멘트 해주세요~

'Study > Physics' 카테고리의 다른 글

leap-frog algorithm  (0) 2012.11.01
Euler method로 미분방정식 풀어보기  (0) 2012.11.01
Spherical Coordinate의 벡터들의 속도와 가속도  (0) 2011.03.13
그리스인 vs 바빌로니아인  (0) 2010.01.17

접속하려는 컴퓨터의 운영체제가 바뀌면 ssh의 key가 잘못되었다는 메세지와 함께 ssh접속이 되지 않는다.

사실 컴터가 뱉어내는 설명을 자세히 보면 힌트가 있는데 별건 아니고...


ssh_keygen -R 123.145.145.335(ip 또는 domain name)


이렇게 하면 ssh key를 다시 생성하고 접속이 가능해진다. man ssh_keygen을 입력해 설명을 보면 다음과 같이 나온다.


진짜 별거 아니네...-.-


     -R hostname

             Removes all keys belonging to hostname from a known_hosts file.

             This option is useful to delete hashed hosts (see the -H option

             above).


유저들에게 sudo 권한을 주고 싶다면 /etc/sudoers 에서 설정을 바꾸어야한다. 


그런데 이게 퍼미션때문에 vi로 수정이 안된다. 열리긴 하는데 읽기전용...


sudo visudo를 입력해 수정해보자. (nano editor가 열린다!!ㅋㅋ)

sudoers에서 수정할 부분은 아래와 같다.


#User privilege specification 에서 

id    ALL=(ALL:ALL) ALL 을 추가해준다.



:ㅂ  (이건!!! vim 의 습관이닷!!!)


'Study > Computer' 카테고리의 다른 글

python으로 중복된 tab없애기  (0) 2012.10.03
ssh 접속이 안될때  (0) 2012.09.21
Linux Backup 때 챙기는 파일들  (0) 2012.09.20
Linux에서 Memory 정보 확인하기  (0) 2012.07.31
Linux에서 Valgrind 사용하기  (0) 2011.08.11

/etc/passwd

/etc/shadow

/etc/group


이 세 파일을 백업해두어야 유저들의 정보를 살릴 수 있다.


세 파일들의 구조는, 


1. passwd

id : x : 1000 : 1001 : ,,, : /home/id : /bin/bash


id는 유저의 id이고 x는 비밀번호를 shadow에 암호화하여 저장했다는 뜻이다. 뒤에 숫자가 2개 보이는데 첫번째 숫자는 유저의 UID이다. 뒤의 숫자는 GID인데 Group을 나타낸다. 뒤에 ,,, 는 사용자 정보인데 입력하지 않으면 저렇게 보인다. 뒤는 홈의 위치와 bash의 위치이다.


2. group

id : x : 1001 : 


위와 마찬가지인데 숫자는 각 group ID를 나타낸다. GID가 겹치게 되면 같은 Group으로 볼 수 있는데 보통 리눅스에서 유저들은 각자 달은 GID를 가지고 있다. 어떻게 GID를 운영하는게 좋은지 공부해봐야 알듯.


3. shadow

비밀번호가 암호화되어 저장되어 있다. 퍼미션 때문에 sudo 권한으로 접근해야 한다.



'Study > Computer' 카테고리의 다른 글

ssh 접속이 안될때  (0) 2012.09.21
Ubuntu superuser 추가하기  (0) 2012.09.20
Linux에서 Memory 정보 확인하기  (0) 2012.07.31
Linux에서 Valgrind 사용하기  (0) 2011.08.11
MS-SQL to MySQL  (0) 2011.02.26

Windows에서는 CPU-Z라는 강력한 프로그램이 있어서 컴퓨터의 많은 하드웨어의 정보를 케이스를 열지 않고도 확인할 수 있다. (Download cpu-z)

그러면 Linux는?? 윈도우보다 하드웨어의 제어가 편할 것 같이 생긴 괴물에서는 어떻게 정보를 확인하나?


cat /proc/meminfo 이렇게 입력하면 역시 RAM의 정보가 뜨긴 하지만 하드웨어에서 필요한 정보가 아니다. 만약 RAM의 클럭속도 등의 하드웨어 정보가 필요하다면, 


  • $ sudo dmidecode --type 17 

이렇게 입력하시라. (위에 하이픈이 2개입니다...) 그럼 

# dmidecode 2.9
SMBIOS 2.6 present.

Handle 0x002D, DMI type 17, 28 bytes
Memory Device
Array Handle: 0x002A
Error Information Handle: No Error
Total Width: 64 bits
Data Width: 64 bits
Size: 2048 MB
Form Factor: DIMM
Set: None
Locator: DIMM0
Bank Locator: BANK0
Type: <OUT OF SPEC>
Type Detail: Synchronous
Speed: 1333 MHz (0.8 ns)
Manufacturer: Samsung      
Serial Number: 0050014
Asset Tag: AssetTagNum0
Part Number: M378B5773CH0-CH9  


이런 정보들이 나온다. 여기서 볼 내용은 BOLD로 되어있다. 필요하다면, 

  • $ sudo dmidecode --type 17 | grep Speed
이렇게 따로 grep을 통해 뽑아 볼 수도 있다.

참고 사이트 : 


'Study > Computer' 카테고리의 다른 글

Ubuntu superuser 추가하기  (0) 2012.09.20
Linux Backup 때 챙기는 파일들  (0) 2012.09.20
Linux에서 Valgrind 사용하기  (0) 2011.08.11
MS-SQL to MySQL  (0) 2011.02.26
도스에서 작업한 txt파일 리눅스에서 편집하기  (2) 2011.01.03

논문들을 보면 참 예쁜 그래프(!)들이 많이 보인다. 그냥 점과 선인데도 왜 내 그래프와 다르게 예뻐보이는거지?! 이유는 간단하다. 그건 유명한 저널들 속에 있기 때문이다. ㅎㅎㅎㅎ 사실 그래프 예쁘게 그리기는 생각보다 중요한(?) 기술인데, 우선 Line과 Point의 Style을 지정해주는 방법부터 보자.

 

gnuplot> 이 상태에서 써주어도 되고 *.gpi 나 *.gnu형태의 파일로 작성해도 된다.

 

1. set linestyle 1 1 lt 1 lw 1  =====> 이건 옛날버전에서만 가능하다. 최신버전[각주:1]이라면 2번처럼 하시길!

2. set style line 1 lt 1 lw 1

 

여기서 옵션 설명은,

  • lt  => line type 이다. 뒤에 숫자에 따라 line의 색이 달라진다. (이건 지정되어 있어 그냥 쓰기 편리하다.)
  • lw => line width 이다. eps 파일로 만들 경우 lw 의 크기는 3~4가 적당하다.
  • pt => Point type이다. 역시 뒤의 숫자에 따라 point의 모양이 달라진다. 소수점으로 크기 지정 가능!
  • ps => point size이다. 2 or 3 까지만 사용해도 크기가 꽤 커진다.
  • lc => line color이다. 뒤의 숫자에 따라 색이 변하는데, 아래의 그림의 순서와 같다.
    검은색이 필요하다면 lc -1로 옵션을 두시라.

 

아래의 그림을 보면 편리하다. f(x)부터 순서대로 lt 1, pt 1이고 숫자가 하나씩 커진다.

그래프를 여러개 그려야 할 경우, set style로 미리 지정해두고 그림을 그리면 된다. 어떻게 그리냐면,

 

plot f(x) ls 1 w lp

여기서 ls => line style을 말한다. 지정되지 않은 line style을 불러올 경우 에러를 뱉고 그래프 안그려주니 조심하시길!

 

 

  1. 어느 버전부터 바뀌었는지 까먹었다.. 아무튼 둘 중 하나가 되니 해보시길! [본문으로]

+ Recent posts