我正在使用DescTools中的Desc()来描述rmarkdown PDF文档中的一些变量。问题在于,当我编织文档时,它会生成3个在同一行中的图,从而剪切图像。
示例:
lambda = 1; % wavelength
E0 = 1; % max value of E-field amplitude
% ==================================================================
% prepare the coordinates mesh
% ----------------------------
zLin = linspace(-201,201,400) * lambda; % z-coordinate (horizontal)
rLin = linspace(-65,65,100) * lambda; % radius-coordinate (vertical)
[z,r] = meshgrid(zLin,rLin); % create mesh
% ===================================================================
wFactor = 4;
w0 = wFactor * lambda; % minimal waist
zR = pi* w0^2 / lambda; % Rayleigh length
w = w0 * sqrt( 1 + (z / zR) .^2 ); % Beam radius at any arbitrary distance (equ. 3)
% Irradiance
eta = 377; % for free space
I0 = abs(E0)^2/eta;
I = I0 .* (w0 ./ w).^2 .* exp( -2*(r./w).^2 );
surf(z,r,I); shading interp
输出包含3个图。我可以在结果[[1]]中使用列表找到各个响应,但找不到图对象,我认为这可能是将一个放置在另一个下方的一种方法。
有什么想法吗?
答案 0 :(得分:3)
results
中没有 个图对象。
相反,当您在控制台中键入results
时,它将调用S3泛型print
,后者又分派print.Desc
方法。默认情况下,print.Desc
将基于results
的“ class”成员调用绘图函数,在您的示例中为"Date"
。如果您在控制台中输入DescTools:::plot.Desc.Date
,则每次打印results
时,都会看到实际生成绘图的函数。
因此没有绘图对象。有数据可以创建绘图,并且每当您将results
打印到控制台时,都会通过调用绘图函数来创建绘图。
Desc
绘图函数似乎很少有可用于修改的选项,因此最好的选择可能是使用results
中的数据来创建自己的绘图。如果您想查看results
的内容而不显示情节,只需键入:
print(results, plotit = FALSE)
如果您希望一次绘制三个图,则可以执行以下操作:
DescTools:::plot.Desc.Date(results[[1]], type = 1)
DescTools:::plot.Desc.Date(results[[1]], type = 2)
DescTools:::plot.Desc.Date(results[[1]], type = 3)