如何制作C++数组的动画颜色图?导出到Python并使用\matplotlib



我有一个C++代码,每次都会创建一个数组。(由于速度的原因,需要C++-如果代码直接用Python构建,则需要8天才能执行。(代码的结构看起来像:

const int StopTime = 10000;
int main(void){
int Time = 0;
while(Time<StopTime){
//Create a 2D array of dimensions 10x10 filled with integers
}
}

最终结果应该是一个动画gif图,它将显示随后生成的10000个阵列的颜色图。我非常熟悉Python的\matplotlib包,所以我希望将所有这10000个数组保存到某个文件中,然后将其导入到Python的代码中,并使用\matplot lib绘制。我该怎么做?或者是否有一些C++库可以在不需要导出数组的情况下提供帮助?越容易理解和学习越好。(我在使用Python时会舒服得多。(

我已经看过了https://github.com/lava/matplotlib-cpp但我甚至无法正确安装它。

能请更有经验的人帮我吗?非常感谢!

附言:我是C++和Python的初学者,也是受过训练的数学家。

解决此类问题的快速而肮脏的方法通常是从主程序生成python代码。这是您的C++程序。例如,字符串[0, 3, 5, 1]是一个有效的python片段,定义了一个由四个值组成的数组。

因此,如果你有std::array<T,N>T[N]std::vector<T>和你的数据,你可以很容易地将它们串行化为可以用作python解释器输入的东西:

template <typename Os, typename It>
void serialise(Os& os, It begin, It end) {
os << '[';
std::string sep;
for (auto it = begin; it != end; ++it) {
os << sep << *it;
sep = ", ";
}
os << " ]";
}

您可以使用呼叫

std::cout << "data = ";
serialise(std::cout,std::begin(data),std::end(data));
std::cout << "n";

您可以很容易地将其抽象为多维数据结构,以打印类似[ [1,2,3], [4,5,6] ]的内容。


然后,您可以将程序包装成一个小脚本(使用bash、python等(,并将C++程序的输出预先准备到matplotlib python脚本中,然后该脚本访问变量data

请考虑以下一个非常粗略的草图,说明如何使用bash:

# generate data array
./main > run.py
# add actual python code that accesses data
cat matplot.tmpl.py >> run.py
# run generated python program
python3 run.py

最新更新