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

标签 python c++ matplotlib animated-gif

我有一个 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 个数组保存到某个文件中,然后将其导入到用\matplotlib 绘制的 Python 代码中。我怎样才能做到呢?或者是否有一些 C++ 库可以提供帮助而无需导出数组?越容易理解和学习越好。 (我使用 Python 更舒服。)

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

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

PS:我是 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

关于python - 如何制作 C++ 数组的动画色彩图?导出到Python并使用\matplotlib?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63668328/

相关文章:

python - Twitter 用户关注者的随机页面

python - 在 Tkinter 标签中嵌入 Matplotlib 图

python - 如何在 matplotlib 中平滑 2D 颜色图

python - 使用 python,如何从第七行开始读取文件?

python - 如何以字符串形式导入模块?

python - 基于生成器的协程与原生协程

java - 从 C++ 调用 dll 实现的 JNI

c++ - C++中的前向声明

c++ - RPM 弱依赖

python - Matplotlib - 散点图周围的边框