我想使用Visual Studio和C++代码创建一个绘图图表。图表应该基于两个轴。“x”轴显示时间,“y”轴显示数组数据。数组数据有100个元素,一秒内读取一个数据。我如何使用任何其他图形库实现代码?
s5a0g9ez1#
5)在你粘贴和项目重新加载后,你可以尝试以下代码:
#include <cstdio> #include <cstdlib> #include <iostream> #include <cstring> #include <cmath> #include "plplot\plstream.h" using namespace std; const int NSIZE = 101; int main(int argc, char ** argv) { PLFLT x[NSIZE], y[NSIZE]; PLFLT xmin = 0., xmax = 1., ymin = 0., ymax = 100.; int i; for (i = 0; i < NSIZE; i++) { x[i] = (PLFLT)(i) / (PLFLT)(NSIZE - 1); y[i] = ymax * x[i] * x[i]; } auto pls = new plstream(); plsdev("wingcc"); pls->init(); pls->env(xmin, xmax, ymin, ymax, 0, 0); pls->lab("x", "y=100 x#u2#d", "Simple PLplot demo of a 2D line plot"); pls->line(NSIZE, x, y); delete pls; }
你会得到:
在MSVC2015上测试
khbbv19g2#
几年前我回答了一个非常类似的问题......有一个简单,直接和可编译的例子:图示-数据分布显然,这个图表不是你需要的那个,但是你可以修改它,用C++画出你想要的任何东西,然后制作任何图表。
izj3ouym3#
在C中绘图是一项有点棘手的工作,因为在任何C IDE中都没有默认的绘图库。但是,有许多在线库可以在C中进行绘图。一些绘图工具,如Gnuplot,PPlot,Matlab,Python,KoolPlot(可能足以满足您的要求)。几天前我已经回答了一个类似的问题(c的绘图包)。答案可能会有帮助。
3ks5zfa04#
我刚刚决定使用gnuplot lol(尽管你需要wslg)。将数据从msvc程序写入文本文件。
# data.dat # X Y 1 2 2 3 3 2 4 1
复制粘贴此gpuplot代码:
# plot.plt # Set linestyle 1 to blue (#0060ad) set style line 1 \ linecolor rgb '#0060ad' \ linetype 1 linewidth 2 \ pointtype 7 pointsize 1.5 plot 'data.dat' with linespoints linestyle 1
在wsl运行中:
gpuplot -p plot.plt
4条答案
按热度按时间s5a0g9ez1#
2)vcpkg.exe安装plplplot从vcpkg文件夹
3)vcpkg.exe集成项目将为您提供将plplplot添加到MSVC项目的说明
4)将此说明粘贴到Nuget控制台:
5)在你粘贴和项目重新加载后,你可以尝试以下代码:
你会得到:
在MSVC2015上测试
khbbv19g2#
几年前我回答了一个非常类似的问题......有一个简单,直接和可编译的例子:图示-数据分布
显然,这个图表不是你需要的那个,但是你可以修改它,用C++画出你想要的任何东西,然后制作任何图表。
izj3ouym3#
在C中绘图是一项有点棘手的工作,因为在任何C IDE中都没有默认的绘图库。但是,有许多在线库可以在C中进行绘图。一些绘图工具,如Gnuplot,PPlot,Matlab,Python,KoolPlot(可能足以满足您的要求)。
几天前我已经回答了一个类似的问题(c的绘图包)。答案可能会有帮助。
3ks5zfa04#
我刚刚决定使用gnuplot lol(尽管你需要wslg)。
将数据从msvc程序写入文本文件。
复制粘贴此gpuplot代码:
在wsl运行中: