Matplotlib从c++; 我使用C++中的MatpTLIB进行调试。我想在同一张图上画几个图。到目前为止我有 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; }
仅显示第一个绘图。要获得所有绘图,我能做些什么?我知道您发布该问题已经很久了,matplotlib的实现可能已经有所改进,但我仍然面临着您同样的问题,因此下面是我如何处理它的: 假设您的数据是(x0,_y_0)和(x_1,_y_1)(让我们暂时忘记大小_0和大小_1)。 只需在任何Matplotlib从c++; 我使用C++中的MatpTLIB进行调试。我想在同一张图上画几个图。到目前为止我有 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; },python,c++,matplotlib,Python,C++,Matplotlib,仅显示第一个绘图。要获得所有绘图,我能做些什么?我知道您发布该问题已经很久了,matplotlib的实现可能已经有所改进,但我仍然面临着您同样的问题,因此下面是我如何处理它的: 假设您的数据是(x0,_y_0)和(x_1,_y_1)(让我们暂时忘记大小_0和大小_1)。 只需在任何绘图()之前调用子绘图(): #包括 名称空间plt=matplotlibcpp; plt::子批次(2,1,1);//2行1列第一个绘图 plt::绘图(x_0,_y_0); plt::子批次(2,1,2);//2行
绘图()之前调用子绘图()
:
#包括
名称空间plt=matplotlibcpp;
plt::子批次(2,1,1);//2行1列第一个绘图
plt::绘图(x_0,_y_0);
plt::子批次(2,1,2);//2行1列第二个绘图
plt::绘图(x_1,_y_1);
plt::show();
仅使用plot()
通常会在同一个图形中显示重叠的两个跟踪,就像在Python中一样。
希望这能有所帮助
plot(x_0,_y_0, size_0);
plot(x_1,_y_1, size_1);
show(); // just calling matplotlib.show
#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();