If the axis ticks are too long, the axis labels might be outside of the figure. When saving the figure, the labels can be cutoff.
For instance the following code produces a cutoff y-axis label.
#include "../../matplotlibcpp.h"
#include <Eigen/Dense>
#include <iostream>
namespace plt = matplotlibcpp;
int main() {
Eigen::VectorXd x = Eigen::VectorXd::LinSpaced(200, 0, 6);
Eigen::VectorXd y, z;
// y = exp(sin(x)), z = exp(cos(z))
y = x.array().sin().exp().matrix();
z = x.array().cos().exp().matrix();
plt::figure();
plt::loglog(x, y);
plt::loglog(x, z);
plt::xlabel("Time in lecture");
plt::ylabel("Student confusion");
plt::grid();
plt::savefig("loglog.pdf"); // !
}The output is
To fix this problem we can tell MPL to use the available space
on the empty sides of the figure, which can be done
either by a call to tight_layout or specifiying bbox_inches="tight"
in savefig.
Thus the issue is fixed by
plt::savefig("loglog.pdf", {{"bbox_inches", "tight"}}); // !