gpt4 book ai didi

c++ - 在 Gnuplot 中绘制一组点、线

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:37:29 24 4
gpt4 key购买 nike

我认为对于已经使用过 gnuplot 和“splot”命令的人来说,这可能是一个非常简单的问题,但我现在无法理解,因为这是我第一天使用这个程序。

我已将我的 C++ 项目链接到 gnuplot,因此我能够创建具有以下格式的 Datafile.dat:

# Xcoord Ycoord Zcoord
1 2 1
2 1 1
3 1 1
3 2 2
3 3 3

在我的 C++ 文件中,我这样做:

#include "gnuplot.h"
#include <iostream>
using namespace std;
int main() {
Gnuplot plot;
plot("set border 4095");
plot("splot \"C:/\\Users/\\lRaulMN/\\Desktop/\\Datafile.dat\" with lines");
return 0;
}

这非常有效,我明白了:

View

现在的问题是:鉴于我使用的 5 个点,有没有什么方法可以在不创建 Datafile.dat 的情况下绘制这些数字?

因为以后我的代码中会有这样的东西:

#include "gnuplot.h"
#include <iostream>
#include <vector>
using namespace std;
typedef struct {
double Time;
double X;
double Y;
double Z;
} DimensionalPoint;

int main() {
Gnuplot plot;
plot("set border 4095");
vector<DimensionalPoint> test;
plot("splot \"C:/\\Users/\\lRaulMN/\\Desktop/\\Datafile.dat\" with lines");
return 0;
}

所以我的想法是用数字填充测试 vector (在我的 C++ 代码中计算它们),然后以某种方式调用 splot 并表示这些数字。

我想到的第一个想法是创建一个包含数字的文件(在 C++ 项目中,在执行时),然后对该文件进行“绘制”,但是我会为每次交互创建很多文件(因为我会有几个 vector ),我不想最终使用这个解决方案。

我想不会有一种 super 简单的方法将 3D 点 vector 插入到 gnuplot 中,但只要我知道如何用 X、Y 和 Z“绘制”至少两个数字,我就可以处理这个问题坐标。

最佳答案

感谢@Thor 和@Bob,我找到了解决方案。

首先我创建了一个“doubletoString”方法:

string doubletoString(double value) {
std::ostringstream origin;
origin << value;
std::string str = origin.str();
return str;
}

然后我创建了几个 3D 点来尝试。

vector<DimensionalPoint> test;
DimensionalPoint A, B, C, D;
A.X = 1; A.Y = 1; A.Z = 1;
B.X = 2; B.Y = 2; B.Z = 3;
C.X = 1.2; C.Y = 2.4; C.Z = 2.3;
D.X = 8; D.Y = 3; D.Z = 1;
test.push_back(A);
test.push_back(B);
test.push_back(C);
test.push_back(D);

然后,我将此消息发送到 GNUPlot。

plot("set border 4095");
plot("$DATA << EOD");
double Xaux, Yaux, Zaux;
for (int i = 0; i < test.size(); i++) {
Xaux = test.at(i).X;
Yaux = test.at(i).Y;
Zaux = test.at(i).Z;
plot(doubletoString(Xaux) + " " + doubletoString(Yaux) + " " +
doubletoString(Zaux));
}
plot("EOD");
plot("splot $DATA with lines");

这是我执行代码时的绘图结果。

Plot generated by GNUplot

关于c++ - 在 Gnuplot 中绘制一组点、线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55003124/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com