【问题标题】:Plotting Graphs in c在 c 中绘制图形
【发布时间】:2011-02-17 18:32:56
【问题描述】:

我是 c 编程的初学者,我目前正在使用 ubuntu 10.04 的 gedit 来编写 c prog,我想绘制一个图形,但我能够做到,谁能告诉我它可以做到吗?有什么方法可以将输出中的数据提取到电子表格中,我可以在其中绘制 req、图表? 感谢您的帮助..nthanx!!!

【问题讨论】:

    标签: c


    【解决方案1】:

    Medsphere 有一些非常棒的GTK# widgets 用于绘图(除其他外),但您需要更清楚自己的输入/输出要求才能获得更具体的帮助。

    【讨论】:

    • #include #include void main() { int i, k; int co=100;诠释L=1;浮动A=0.02;诠释 t[]={0, 5, 10};浮动 T[21][3];浮动y;浮动 x[] = {0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.30, 0.35, 0.40, 0.45, 0.50, 0.55, 0.60, 0.65, 0.70, 0.75, 0.80, 0.85, 0.90, 0.95, 1}; printf("距离温度\n"); for(k=0;kL)); T[i][k]=coy*sin(3.14*x[i]/L); T[0][k]=0; T[20][k]=0; printf("%f %d %f\n", x[i], t[k], T[i][k]); } } } 这是我想要绘制 T[i][k] v/s x[i] 的代码
    • 这完全不可读-也许编辑问题并将其放在那里。此外,我的回答与 C# 有关,您的代码(现在是问题编辑)表明您实际上是在谈论 C,它是一匹不同颜色的马。如果你有电子表格中的数据,我会按照 Marco 所说的那样使用 gnuplot,根本不需要编写 C 程序。
    【解决方案2】:

    你可以用这个字符(■)来表示图表中的计数。这是一个可以打印的字符

    printf("%c", (char)254u);
    

    考虑一些随机的 float_arrhist 数组来保存计数。

    代码

    // Function generating random data
    for (i = 0; i < n; i++){
        float random = ((float)rand() / (float)(RAND_MAX));
        float_arr[i] = random;
        printf("%f  ", random);
    }
    //Dividing float data into bins
    for (i = 0; i < n; i++){
        for (j = 1; j <= bins; j++){
    
            float bin_max = (float)j / (float)bins;
            if (float_arr[i] <= bin_max){
                hist[j]++;
                break;
            }
        }
    }
    // Plotting histogram
    printf("\n\nHistogram of Float data\n");
    for (i = 1; i <= bins; i++)
    {
        count = hist[i];
        printf("0.%d |", i - 1);
        for (j = 0; j < count; j++)
        {
            printf("%c", (char)254u);
        }
        printf("\n");
    }
    

    输出

    Histogram of Float data
    0.0 |■■■■■■■■■■■■■■■■■■■■■■
    0.1 |■■■■■■■■■■■■■■■■
    0.2 |■■■■■
    0.3 |■■■■■■■■■■■■■■
    0.4 |■■■■■■■■
    0.5 |■■■■■■■■■■■■■■■■
    0.6 |■■■■■■■■■■
    0.7 |■■■■■■■
    0.8 |■■■■■■■■■■■■■■■
    0.9 |■■■■■■■
    

    【讨论】:

      【解决方案3】:

      Gnuplot (http://www.gnuplot.info/) 是一个功能强大且免费的数据绘图工具。 您的问题不清楚是否要以编程方式绘制数据。

      【讨论】:

      • 如果可能的话...或者如果对像我这样的初学者来说非常困难,我想知道有没有办法将输出数据提取到电子表格中,我可以在其中绘制它...
      • 我第二个 gnuplot。很容易输出 csv 然后将其提供给 gnuplot。
      【解决方案4】:

      我认为MathGL 可以帮助您。它是 GPL 绘图库,可以在不了解任何小部件库的情况下使用您的绘图创建一个窗口。它还为矩阵和 3 范围数据提供了漂亮的图形。

      【讨论】:

        【解决方案5】:

        你的问题和我一样。为此,编写了一些库来促进或多或少这样的工作:

        1. 打开一个新窗口
        2. 画一些东西。即坐标、曲线、背景等。

        在 c/c++ 中有一些这样的库是:

        1. libplot,gnu 绘图工具 www.gnu.org/s/plotutils。是一个非常基本的文档,文档中有很好的示例, 在 svg、png 和其他文件中绘图。您还可以在窗口中绘图或制作动画。
        2. mathGL 是基于 open-gl 的。

        另一种绘图方法是在您的 c 代码中生成数据,然后使用其他程序对其进行绘图。有可能的 运行 gnuplot 并通过管道传递数据。但是你必须使用叉子和管道。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多