Matplotlib 从 c++ 绘制多个图表
Matplotlib plot multiple charts from c++
我使用C ++的matplotlib进行(调试)绘图。我想在同一张图中绘制多个图。到目前为止,我有
template<typename NumericX, typename NumericY>
bool plot(const NumericX const* x, const NumericY const* y, std::size_t size, const std::string& s = "")
{
PyObject* xlist = PyList_New(size);
PyObject* ylist = PyList_New(size);
PyObject* pystring = PyUnicode_FromString(s.c_str());
for(size_t i = 0; i < size; ++i) {
PyList_SetItem(xlist, i, PyFloat_FromDouble(x[i]));
PyList_SetItem(ylist, i, PyFloat_FromDouble(y[i]));
}
PyObject* plot_args = PyTuple_New(3);
PyTuple_SetItem(plot_args, 0, xlist);
PyTuple_SetItem(plot_args, 1, ylist);
PyTuple_SetItem(plot_args, 2, pystring);
PyObject* pymod = PyImport_Import(pyplotname);
PyObject* s_python_function_plot = PyObject_GetAttrString(pymod, "plot");
PyObject* res = PyObject_CallObject(s_python_function_plot, plot_args);
Py_DECREF(xlist);
Py_DECREF(ylist);
Py_DECREF(plot_args);
if(res) Py_DECREF(res);
return res;
}
但打电话
plot(x_0,_y_0, size_0);
plot(x_1,_y_1, size_1);
show(); // just calling matplotlib.show
仅显示第一个图。我能做什么,才能获得所有的情节?
我知道自从你发布这个问题以来已经有很长时间了,matplotlib 的实现可能已经有所改进,但我仍然遇到了同样的问题,所以这是我如何应对的:假设您的数据是(x0,_y_0)和(x_1,_y_1)(让我们暂时忘记size_0和size_1)。只需在plot()
之前致电subplot()
:
#include <matplotlibcpp.h>
namespace plt = matplotlibcpp;
plt::subplot(2, 1, 1); // 2 rows, 1 column, first plot
plt::plot(x_0,_y_0);
plt::subplot(2, 1, 2); // 2 rows, 1 column, second plot
plt::plot(x_1,_y_1);
plt::show();
仅使用 plot()
通常会在同一图形中显示重叠的两个跟踪,就像在 Python 中一样。希望这能有所帮助。
相关文章:
- QuadTree只在窗口的右上角绘制
- 绘制旋转的三角形
- flutter:即使shouldRepaint()返回true,自定义画家也不会重新绘制
- 如何在QT中的自定义视频小工具t上绘制矩形
- 如何在Visual Basic中使用矩形函数OpenGL绘制矩形
- 无法使用VAO和EBO(openGL)绘制多个对象
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- 绘制顺时针三角形,重新排序点
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- SFML 文本未绘制在窗口上
- 如何在快板的屏幕中显示子位图的绘制?
- 如何绘制自定义形状的元素?
- QPainter 将 QBrush 设置为 在 QT/C++ 中绘制文本
- 除非重新绘制大小,否则SDL_Texture在调整大小后呈现黑色
- 绘制文本问题
- 在 QT C++中绘制/操作多边形
- 如何在 Gnuplot 中分别绘制 2 个文件数据?我有一个文件"sin.txt",另一个文件"cos.txt",我想将它们分别绘制在一个图表上
- 在现代OpenGL中,绘制GL_TRIANGLE奇怪的z轴行为的填充圆
- OpenGL 着色器不绘制任何东西 - 糟糕的精灵类
- 要在屏幕上绘制一些小瓷砖,我应该使用 QQuickItem 还是 QQuickPaintedItem?