리눅스에서 c언어로 그래프 그리기

somedayhow의 이미지

이건 설치 및 활용에 올려야할지 여기에 올려야 할지 헷갈리지만

프로그래밍과 관련된거라 여기 올립니다.

현재 리눅스를 사용하고 있고

C언어를 이용해 프로그램을 만들고 그 프로그램이 결과값 그래프를 그려야 합니다.

system() 명령으로 gnuplot같은것을 불러서

그래프를 그릴 수 있지만 기능이 한정되었다고 들었습니다.

많은 종류의(out1,out2 ~~~~ out100) 데이터를 그려야하고 시각적으로도 표현해야해서

제약이 있다고 들었습니다.

그래서 qti를 찾아보았는데 아마 원하는 기능이 있는것 같습니다

여기서 문제는

C언어로 짠 프로그램이 qti를 실행하고 수행한 결과값을 그래프로 그려줄 수 있는가 입니다

만약 불가능하다면

이런 기능을 할 수 있는 방법을 추천해주시기를 부탁드립니다.

익명 사용자의 이미지

Python API 가 있네요. http://soft.proindependent.com/doc/manual-en/c6050.html
간단한 방법은 Python script를 미리 작성해놓거나 C로 그때 그때 Python script를 생성한 다음 system을 사용해서 실행할 수 있겠습니다.
C API 가 있다면 C프로그램에서 직접 그래프를 그릴 수도 있겠지만 없는 것 같네요.
qt를 사용한 것 같으니 어쩌면 C++ API는 있을 지도 모르겠습니다. (문서에는 없지만)

somedayhow의 이미지

제가 프로그래밍 초보자라 그러는데

조금만 더 상세히 알려주실 수 있으신가요?

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을 사용해서 실행하는 것과 같습니다.
gui는 사용하지 않으니까 커서를 움직일 필요는 없습니다.
말하자면 plot.py 파일에 "이런 이런 그래프를 그려라" 하는 python 프로그램을 넣고, system("python plot.py") 를 해주면 됩니다.
plot.py 파일의 내용은 C프로그램에서 동적으로 만들 수도 있고, 그럴 필요가 없으면 미리 만들어 놓을 수도 있구요.
python 스크립트에서 사용할 함수들은 qti가 제공합니다. 위에 링크한 문서를 읽어보세요.
하지만 (아래에 snowall님이 쓰셨듯이) 가능하다면 데이터를 생성하는 프로그램과 후처리하는 프로그램을 별도로 작성하시는 것이 좋습니다.
데이터 생성은 C가 좋더라도 (컴퓨팅 파워가 필요한 시뮬레이션같은 것이라면 특히나),
생성된 데이터를 가공하는 것은 스크립트 언어가 편리합니다. 물론 python을 사용셔도 되겠지요.

somedayhow의 이미지

정말 고맙습니다.

그런식으로 동작시키는것이었네요

데이터를 생성하는 프로그램과 후처리하는 프로그램을 별도로 작성하는 습관을 들이도록 해야겠습니다.

읽어보고 공부해보겠습니다.

system("python plot.py");
에 대해 다시 한번 질문드립니다.

python으로 동작하는 프로그램들이 많을건데

matlablib나 qti등등등

system(python plot.py); 라는 명령으로

어떻게 qti를 지정해서 실행시킬수가 있는건가요?

----------------------------------------------------------------------------------------------------------------------
많이 배워갑니다
고맙습니다.
언젠가 질문이 아니라 답변을 달아줄 수 있는 날이 오기를

익명 사용자의 이미지

당연히 plot.py의 내용에 따라 달라지겠지요.
plot.py의 내용이 hello world를 출력하는 것이면 hello world가 출력될 것이고,
qti가 제공하는 api를 사용해서 그림을 그리는 것이면 그림을 그릴 것이고,
matplotlib를 사용해서 그림을 그리는 것이면 그렇게 그림을 그리겠지요.

somedayhow의 이미지

답변 고맙습니다~~ㅎㅎ

----------------------------------------------------------------------------------------------------------------------
많이 배워갑니다
고맙습니다.
언젠가 질문이 아니라 답변을 달아줄 수 있는 날이 오기를

snowall의 이미지

꼭 그 프로그램 안에 그래픽 루틴을 넣어야 하는 것이 아니라면, 그 프로그램은 출력 결과물을 텍스트 파일로 저장하도록 하고, 그래프는 gnuplot을 이용해서 만들도록 하는 것이 더 낫습니다. 그리고 프로그램과 gnuplot을 한번에 실행시키도록 스크립트를 짜면 되겠죠. gnuplot은 뭘 원하시는지는 모르겠으나 아마 원하는 바로 그 모양을 출력할 수 있는 기능이 있을 겁니다. 그게 안되면 visit같은 전문적인 그래픽 프로그램을 써야겠죠.

만약 프로그램이 그래픽 루틴을 꼭 써야 한다면, wxwidget에 대해 공부하시면 좋을 것 같습니다.

파이썬 API를 쓰는건 나쁜 방법은 아니겠지만, C로 파이썬 스크립트를 생성하도록 하는 루틴을 구현해서 넣으려면 차라리 gnuplot을 쓰시는게 더 좋을 겁니다. 저도 해봐서 알아요.

피할 수 있을때 즐겨라! http://melotopia.net/b

somedayhow의 이미지

교수님께서도 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도 이런게 가능한지도 잘 모르겠습니다

----------------------------------------------------------------------------------------------------------------------
많이 배워갑니다
고맙습니다.
언젠가 질문이 아니라 답변을 달아줄 수 있는 날이 오기를

snowall의 이미지

이런거 말씀하시는 것 같은데요
http://gnuplot.sourceforge.net/demo_4.6/key.html
http://gnuplot.sourceforge.net/demo_4.6/multiplt.html

그리고 실제 데이터의 일부를 보여주시는 것이 좀 더 답변드리기에 쉽습니다.

피할 수 있을때 즐겨라! http://melotopia.net/b

somedayhow의 이미지

제 설명이 많이 부족했나 봅니다. ㅠㅠ

위와 같은 데이터를 다뤄야 하니 색이 다른 그래프들로 표현하기에는 힘이들거 같습니다.

그래서 첨부한 그래프들과 같이 처리를 할 필요가 있습니다

특히 004, 005를 보면

값변화에 따라 색이 변합니다

마치 적외선 센서로 온도보는것 처럼요

이렇게 처리하는것이 가능할까요?

댓글 첨부 파일: 
첨부파일 크기
PDF icon Table3.pdf11.7 KB
Image icon 영역_005.jpeg94.6 KB
Image icon 영역_004.jpeg184.17 KB
Image icon 영역_006.jpeg160.98 KB

----------------------------------------------------------------------------------------------------------------------
많이 배워갑니다
고맙습니다.
언젠가 질문이 아니라 답변을 달아줄 수 있는 날이 오기를

익명 사용자의 이미지

첨부 파일이 보이지 않습니다만. http://gnuplot.sourceforge.net/demo/heatmaps.html 이런 것 인지?

somedayhow의 이미지

gnuplot으로 가능했다니 제가 기능을 잘 몰랐는가 봅니다

고맙습니다

저게 가능하다면

영역6의 그래프도 가능할것 같습니다.

그렇다면 영역4의 그래프도 가능할것 같습니다.

다시한번 봐주시기 바랍니다

첨부파일은 확장자들을 바꾸어서 다시 올려보겠습니다

댓글 첨부 파일: 
첨부파일 크기
Image icon 영역_004.png253.8 KB
Image icon 영역_006.gif92.9 KB
Image icon 영역_006.jpeg160.98 KB
PDF icon 영역_004.pdf290.41 KB
PDF icon 영역_006.pdf317.53 KB

----------------------------------------------------------------------------------------------------------------------
많이 배워갑니다
고맙습니다.
언젠가 질문이 아니라 답변을 달아줄 수 있는 날이 오기를

snowall의 이미지

첨부화일은 안보이지만, 아무튼 density plot 종류네요. 별로 어려울 것 없어 보이는데 어느 부분이 막힌거죠?

피할 수 있을때 즐겨라! http://melotopia.net/b

익명 사용자의 이미지

혹시 MATLAB 사용이 익숙하시다면, octave로 그려보는 것도 좋을 것 같습니다. 거의 모든 명령어가 MATLAB과 호환됩니다.
http://ko.wikipedia.org/wiki/GNU_%EC%98%A5%ED%83%80%EB%B8%8C

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.