리눅스에서 c언어로 그래프 그리기
글쓴이: somedayhow / 작성시간: 화, 2013/01/22 - 12:15오전
이건 설치 및 활용에 올려야할지 여기에 올려야 할지 헷갈리지만
프로그래밍과 관련된거라 여기 올립니다.
현재 리눅스를 사용하고 있고
C언어를 이용해 프로그램을 만들고 그 프로그램이 결과값 그래프를 그려야 합니다.
system() 명령으로 gnuplot같은것을 불러서
그래프를 그릴 수 있지만 기능이 한정되었다고 들었습니다.
많은 종류의(out1,out2 ~~~~ out100) 데이터를 그려야하고 시각적으로도 표현해야해서
제약이 있다고 들었습니다.
그래서 qti를 찾아보았는데 아마 원하는 기능이 있는것 같습니다
여기서 문제는
C언어로 짠 프로그램이 qti를 실행하고 수행한 결과값을 그래프로 그려줄 수 있는가 입니다
만약 불가능하다면
이런 기능을 할 수 있는 방법을 추천해주시기를 부탁드립니다.
Forums:
Python API 가 있네요.
Python API 가 있네요. http://soft.proindependent.com/doc/manual-en/c6050.html
간단한 방법은 Python script를 미리 작성해놓거나 C로 그때 그때 Python script를 생성한 다음 system을 사용해서 실행할 수 있겠습니다.
C API 가 있다면 C프로그램에서 직접 그래프를 그릴 수도 있겠지만 없는 것 같네요.
qt를 사용한 것 같으니 어쩌면 C++ API는 있을 지도 모르겠습니다. (문서에는 없지만)
답변 고맙습니다^^
제가 프로그래밍 초보자라 그러는데
조금만 더 상세히 알려주실 수 있으신가요?
Phython script를 미리 작성하거나 C로 Phython script를 생성한 다음 system을 사용해서 실행할 수 있다는게 무슨 방식인지는 대략 알겠지만
어떻게 구현해야할지가 감이 안잡힙니다.
제가 아는 정도는
char str[12];
str="ls"
system(str);
을 통해
해당 폴더안의 무슨 파일들이 있는지를 알아보는 정도 입니다.
하지만 qti를 system명령어로 실행시켰다고 해도
qti실행화면으로 커서를 움직이고
단축키로 데이터를 읽고.. ( 절대 이런 방식을 뜻하시지는 않으셨을 겁니다.ㅠㅠ)
str="qti실행";
system(str);
str=" "; // Phython script
system(str);
str-" " ; //Phython script
system(str);
이렇게 적고보니 뭔가 아닌것 같습니다.
어떻게 구현할 수 있을까요?
사실 qti도 검색하다가 기능이 많다고 하길래 선택한겁니다.
밑 댓글에 적은 기능을 사용할 수 있을까요?
----------------------------------------------------------------------------------------------------------------------
많이 배워갑니다
고맙습니다.
언젠가 질문이 아니라 답변을 달아줄 수 있는 날이 오기를
gnuplot을 system을 사용해서 실행하는 것과
gnuplot을 system을 사용해서 실행하는 것과 같습니다.
gui는 사용하지 않으니까 커서를 움직일 필요는 없습니다.
말하자면 plot.py 파일에 "이런 이런 그래프를 그려라" 하는 python 프로그램을 넣고, system("python plot.py") 를 해주면 됩니다.
plot.py 파일의 내용은 C프로그램에서 동적으로 만들 수도 있고, 그럴 필요가 없으면 미리 만들어 놓을 수도 있구요.
python 스크립트에서 사용할 함수들은 qti가 제공합니다. 위에 링크한 문서를 읽어보세요.
하지만 (아래에 snowall님이 쓰셨듯이) 가능하다면 데이터를 생성하는 프로그램과 후처리하는 프로그램을 별도로 작성하시는 것이 좋습니다.
데이터 생성은 C가 좋더라도 (컴퓨팅 파워가 필요한 시뮬레이션같은 것이라면 특히나),
생성된 데이터를 가공하는 것은 스크립트 언어가 편리합니다. 물론 python을 사용셔도 되겠지요.
아 gui를 쓰지않아도 되는군요
정말 고맙습니다.
그런식으로 동작시키는것이었네요
데이터를 생성하는 프로그램과 후처리하는 프로그램을 별도로 작성하는 습관을 들이도록 해야겠습니다.
읽어보고 공부해보겠습니다.
system("python plot.py");
에 대해 다시 한번 질문드립니다.
python으로 동작하는 프로그램들이 많을건데
matlablib나 qti등등등
system(python plot.py); 라는 명령으로
어떻게 qti를 지정해서 실행시킬수가 있는건가요?
----------------------------------------------------------------------------------------------------------------------
많이 배워갑니다
고맙습니다.
언젠가 질문이 아니라 답변을 달아줄 수 있는 날이 오기를
당연히 plot.py의 내용에 따라
당연히 plot.py의 내용에 따라 달라지겠지요.
plot.py의 내용이 hello world를 출력하는 것이면 hello world가 출력될 것이고,
qti가 제공하는 api를 사용해서 그림을 그리는 것이면 그림을 그릴 것이고,
matplotlib를 사용해서 그림을 그리는 것이면 그렇게 그림을 그리겠지요.
그렇군요
답변 고맙습니다~~ㅎㅎ
----------------------------------------------------------------------------------------------------------------------
많이 배워갑니다
고맙습니다.
언젠가 질문이 아니라 답변을 달아줄 수 있는 날이 오기를
꼭 그 프로그램 안에 그래픽 루틴을 넣어야 하는 것이
꼭 그 프로그램 안에 그래픽 루틴을 넣어야 하는 것이 아니라면, 그 프로그램은 출력 결과물을 텍스트 파일로 저장하도록 하고, 그래프는 gnuplot을 이용해서 만들도록 하는 것이 더 낫습니다. 그리고 프로그램과 gnuplot을 한번에 실행시키도록 스크립트를 짜면 되겠죠. gnuplot은 뭘 원하시는지는 모르겠으나 아마 원하는 바로 그 모양을 출력할 수 있는 기능이 있을 겁니다. 그게 안되면 visit같은 전문적인 그래픽 프로그램을 써야겠죠.
만약 프로그램이 그래픽 루틴을 꼭 써야 한다면, wxwidget에 대해 공부하시면 좋을 것 같습니다.
파이썬 API를 쓰는건 나쁜 방법은 아니겠지만, C로 파이썬 스크립트를 생성하도록 하는 루틴을 구현해서 넣으려면 차라리 gnuplot을 쓰시는게 더 좋을 겁니다. 저도 해봐서 알아요.
피할 수 있을때 즐겨라! http://melotopia.net/b
gnuplot을 사용하려고 해봤지만
교수님께서도 gnuplot으로는 안된다고 말씀하시더라구요
출력데이터를 가지고
매트릭스형태의 그래프를 그려서 데이터 값 변화에 따라 색이 변화는등
ex)
사각형 매트릭스의
(0,0)에는 output1이
(0,1)에는 output2가
.
.
.
이런식으로 지정해서 output1이 0.1일때는 (0,0)이 red , output1이 0.3일때는 (0,0)이 blue
나머지 매트릭스들도 이런식으로
색이 변화하는것을 보아야합니다.
혹시 가능할까요?
그리고
x축에는 시간축
y축에 outpu1~100까지를
붙여서
그러니까
y축
^
|
output100
output99
output98
output97
.
.
.
output1
--------------------------------------------->time
각 아웃풋값은 색으로 표현하는 등의 기능이 가능할까요?
제가 리눅스 입문자라서
qti도 이런게 가능한지도 잘 모르겠습니다
----------------------------------------------------------------------------------------------------------------------
많이 배워갑니다
고맙습니다.
언젠가 질문이 아니라 답변을 달아줄 수 있는 날이 오기를
이런거 말씀하시는 것
이런거 말씀하시는 것 같은데요
http://gnuplot.sourceforge.net/demo_4.6/key.html
http://gnuplot.sourceforge.net/demo_4.6/multiplt.html
그리고 실제 데이터의 일부를 보여주시는 것이 좀 더 답변드리기에 쉽습니다.
피할 수 있을때 즐겨라! http://melotopia.net/b
죄송하지만 아닌것 같습니다.
제 설명이 많이 부족했나 봅니다. ㅠㅠ
위와 같은 데이터를 다뤄야 하니 색이 다른 그래프들로 표현하기에는 힘이들거 같습니다.
그래서 첨부한 그래프들과 같이 처리를 할 필요가 있습니다
특히 004, 005를 보면
값변화에 따라 색이 변합니다
마치 적외선 센서로 온도보는것 처럼요
이렇게 처리하는것이 가능할까요?
----------------------------------------------------------------------------------------------------------------------
많이 배워갑니다
고맙습니다.
언젠가 질문이 아니라 답변을 달아줄 수 있는 날이 오기를
첨부 파일이 보이지 않습니다만.
첨부 파일이 보이지 않습니다만. http://gnuplot.sourceforge.net/demo/heatmaps.html 이런 것 인지?
오 맞는것 같습니다
gnuplot으로 가능했다니 제가 기능을 잘 몰랐는가 봅니다
고맙습니다
저게 가능하다면
영역6의 그래프도 가능할것 같습니다.
그렇다면 영역4의 그래프도 가능할것 같습니다.
다시한번 봐주시기 바랍니다
첨부파일은 확장자들을 바꾸어서 다시 올려보겠습니다
----------------------------------------------------------------------------------------------------------------------
많이 배워갑니다
고맙습니다.
언젠가 질문이 아니라 답변을 달아줄 수 있는 날이 오기를
첨부화일은 안보이지만, 아무튼 density plot
첨부화일은 안보이지만, 아무튼 density plot 종류네요. 별로 어려울 것 없어 보이는데 어느 부분이 막힌거죠?
피할 수 있을때 즐겨라! http://melotopia.net/b
혹시 MATLAB 사용이 익숙하시다면, octave로
혹시 MATLAB 사용이 익숙하시다면, octave로 그려보는 것도 좋을 것 같습니다. 거의 모든 명령어가 MATLAB과 호환됩니다.
http://ko.wikipedia.org/wiki/GNU_%EC%98%A5%ED%83%80%EB%B8%8C
댓글 달기