@@ -36,6 +36,9 @@ namespace matplotlibcpp {
36
36
PyObject *s_python_function_save;
37
37
PyObject *s_python_function_figure;
38
38
PyObject *s_python_function_plot;
39
+ PyObject *s_python_function_semilogx;
40
+ PyObject *s_python_function_semilogy;
41
+ PyObject *s_python_function_loglog;
39
42
PyObject *s_python_function_fill_between;
40
43
PyObject *s_python_function_hist;
41
44
PyObject *s_python_function_subplot;
@@ -111,6 +114,9 @@ namespace matplotlibcpp {
111
114
s_python_function_pause = PyObject_GetAttrString (pymod, " pause" );
112
115
s_python_function_figure = PyObject_GetAttrString (pymod, " figure" );
113
116
s_python_function_plot = PyObject_GetAttrString (pymod, " plot" );
117
+ s_python_function_semilogx = PyObject_GetAttrString (pymod, " semilogx" );
118
+ s_python_function_semilogy = PyObject_GetAttrString (pymod, " semilogy" );
119
+ s_python_function_loglog = PyObject_GetAttrString (pymod, " loglog" );
114
120
s_python_function_fill_between = PyObject_GetAttrString (pymod, " fill_between" );
115
121
s_python_function_hist = PyObject_GetAttrString (pymod," hist" );
116
122
s_python_function_subplot = PyObject_GetAttrString (pymod, " subplot" );
@@ -133,6 +139,9 @@ namespace matplotlibcpp {
133
139
|| !s_python_function_pause
134
140
|| !s_python_function_figure
135
141
|| !s_python_function_plot
142
+ || !s_python_function_semilogx
143
+ || !s_python_function_semilogy
144
+ || !s_python_function_loglog
136
145
|| !s_python_function_fill_between
137
146
|| !s_python_function_subplot
138
147
|| !s_python_function_legend
@@ -156,6 +165,9 @@ namespace matplotlibcpp {
156
165
|| !PyFunction_Check (s_python_function_pause)
157
166
|| !PyFunction_Check (s_python_function_figure)
158
167
|| !PyFunction_Check (s_python_function_plot)
168
+ || !PyFunction_Check (s_python_function_semilogx)
169
+ || !PyFunction_Check (s_python_function_semilogy)
170
+ || !PyFunction_Check (s_python_function_loglog)
159
171
|| !PyFunction_Check (s_python_function_fill_between)
160
172
|| !PyFunction_Check (s_python_function_subplot)
161
173
|| !PyFunction_Check (s_python_function_legend)
@@ -397,6 +409,75 @@ namespace matplotlibcpp {
397
409
return res;
398
410
}
399
411
412
+ template <typename NumericX, typename NumericY>
413
+ bool semilogx (const std::vector<NumericX>& x, const std::vector<NumericY>& y, const std::string& s = " " )
414
+ {
415
+ assert (x.size () == y.size ());
416
+
417
+ PyObject* xarray = get_array (x);
418
+ PyObject* yarray = get_array (y);
419
+
420
+ PyObject* pystring = PyString_FromString (s.c_str ());
421
+
422
+ PyObject* plot_args = PyTuple_New (3 );
423
+ PyTuple_SetItem (plot_args, 0 , xarray);
424
+ PyTuple_SetItem (plot_args, 1 , yarray);
425
+ PyTuple_SetItem (plot_args, 2 , pystring);
426
+
427
+ PyObject* res = PyObject_CallObject (detail::_interpreter::get ().s_python_function_semilogx , plot_args);
428
+
429
+ Py_DECREF (plot_args);
430
+ if (res) Py_DECREF (res);
431
+
432
+ return res;
433
+ }
434
+
435
+ template <typename NumericX, typename NumericY>
436
+ bool semilogy (const std::vector<NumericX>& x, const std::vector<NumericY>& y, const std::string& s = " " )
437
+ {
438
+ assert (x.size () == y.size ());
439
+
440
+ PyObject* xarray = get_array (x);
441
+ PyObject* yarray = get_array (y);
442
+
443
+ PyObject* pystring = PyString_FromString (s.c_str ());
444
+
445
+ PyObject* plot_args = PyTuple_New (3 );
446
+ PyTuple_SetItem (plot_args, 0 , xarray);
447
+ PyTuple_SetItem (plot_args, 1 , yarray);
448
+ PyTuple_SetItem (plot_args, 2 , pystring);
449
+
450
+ PyObject* res = PyObject_CallObject (detail::_interpreter::get ().s_python_function_semilogy , plot_args);
451
+
452
+ Py_DECREF (plot_args);
453
+ if (res) Py_DECREF (res);
454
+
455
+ return res;
456
+ }
457
+
458
+ template <typename NumericX, typename NumericY>
459
+ bool loglog (const std::vector<NumericX>& x, const std::vector<NumericY>& y, const std::string& s = " " )
460
+ {
461
+ assert (x.size () == y.size ());
462
+
463
+ PyObject* xarray = get_array (x);
464
+ PyObject* yarray = get_array (y);
465
+
466
+ PyObject* pystring = PyString_FromString (s.c_str ());
467
+
468
+ PyObject* plot_args = PyTuple_New (3 );
469
+ PyTuple_SetItem (plot_args, 0 , xarray);
470
+ PyTuple_SetItem (plot_args, 1 , yarray);
471
+ PyTuple_SetItem (plot_args, 2 , pystring);
472
+
473
+ PyObject* res = PyObject_CallObject (detail::_interpreter::get ().s_python_function_loglog , plot_args);
474
+
475
+ Py_DECREF (plot_args);
476
+ if (res) Py_DECREF (res);
477
+
478
+ return res;
479
+ }
480
+
400
481
template <typename NumericX, typename NumericY>
401
482
bool errorbar (const std::vector<NumericX> &x, const std::vector<NumericY> &y, const std::vector<NumericX> &yerr, const std::string &s = " " )
402
483
{
@@ -478,6 +559,81 @@ namespace matplotlibcpp {
478
559
return res;
479
560
}
480
561
562
+ template <typename Numeric>
563
+ bool named_semilogx (const std::string& name, const std::vector<Numeric>& x, const std::vector<Numeric>& y, const std::string& format = " " )
564
+ {
565
+ PyObject* kwargs = PyDict_New ();
566
+ PyDict_SetItemString (kwargs, " label" , PyString_FromString (name.c_str ()));
567
+
568
+ PyObject* xarray = get_array (x);
569
+ PyObject* yarray = get_array (y);
570
+
571
+ PyObject* pystring = PyString_FromString (format.c_str ());
572
+
573
+ PyObject* plot_args = PyTuple_New (3 );
574
+ PyTuple_SetItem (plot_args, 0 , xarray);
575
+ PyTuple_SetItem (plot_args, 1 , yarray);
576
+ PyTuple_SetItem (plot_args, 2 , pystring);
577
+
578
+ PyObject* res = PyObject_Call (detail::_interpreter::get ().s_python_function_semilogx , plot_args, kwargs);
579
+
580
+ Py_DECREF (kwargs);
581
+ Py_DECREF (plot_args);
582
+ if (res) Py_DECREF (res);
583
+
584
+ return res;
585
+ }
586
+
587
+ template <typename Numeric>
588
+ bool named_semilogy (const std::string& name, const std::vector<Numeric>& x, const std::vector<Numeric>& y, const std::string& format = " " )
589
+ {
590
+ PyObject* kwargs = PyDict_New ();
591
+ PyDict_SetItemString (kwargs, " label" , PyString_FromString (name.c_str ()));
592
+
593
+ PyObject* xarray = get_array (x);
594
+ PyObject* yarray = get_array (y);
595
+
596
+ PyObject* pystring = PyString_FromString (format.c_str ());
597
+
598
+ PyObject* plot_args = PyTuple_New (3 );
599
+ PyTuple_SetItem (plot_args, 0 , xarray);
600
+ PyTuple_SetItem (plot_args, 1 , yarray);
601
+ PyTuple_SetItem (plot_args, 2 , pystring);
602
+
603
+ PyObject* res = PyObject_Call (detail::_interpreter::get ().s_python_function_semilogy , plot_args, kwargs);
604
+
605
+ Py_DECREF (kwargs);
606
+ Py_DECREF (plot_args);
607
+ if (res) Py_DECREF (res);
608
+
609
+ return res;
610
+ }
611
+
612
+ template <typename Numeric>
613
+ bool named_loglog (const std::string& name, const std::vector<Numeric>& x, const std::vector<Numeric>& y, const std::string& format = " " )
614
+ {
615
+ PyObject* kwargs = PyDict_New ();
616
+ PyDict_SetItemString (kwargs, " label" , PyString_FromString (name.c_str ()));
617
+
618
+ PyObject* xarray = get_array (x);
619
+ PyObject* yarray = get_array (y);
620
+
621
+ PyObject* pystring = PyString_FromString (format.c_str ());
622
+
623
+ PyObject* plot_args = PyTuple_New (3 );
624
+ PyTuple_SetItem (plot_args, 0 , xarray);
625
+ PyTuple_SetItem (plot_args, 1 , yarray);
626
+ PyTuple_SetItem (plot_args, 2 , pystring);
627
+
628
+ PyObject* res = PyObject_Call (detail::_interpreter::get ().s_python_function_loglog , plot_args, kwargs);
629
+
630
+ Py_DECREF (kwargs);
631
+ Py_DECREF (plot_args);
632
+ if (res) Py_DECREF (res);
633
+
634
+ return res;
635
+ }
636
+
481
637
template <typename Numeric>
482
638
bool plot (const std::vector<Numeric>& y, const std::string& format = " " )
483
639
{
0 commit comments