绘制图形的痕迹
Plot trace of figure
我有 11 个二进制数据集,我想生成一个图表,其中包含数据集(所有 297x258)的相应数字的轨迹,其中 y 轴和 x 轴乘以比例(1.3 *10^(-6)) 并分别标记为 'Y-axis(μm)' 和 'X-axis (μm)'。 11 个数据集存储在一个单元格中(即 data1{1}
,...data1{11}
)。此外,如果绘图还可以用相应数据集的名称标记每个轨迹,我们将不胜感激(即 data1{1},...
)。
预期输出示例:
为了绘制此图,我首先在所有数据集的每一列中找到第一个非零元素,然后将它们相加以绘制彼此重叠的线条。
最后,我将轴乘以您提供的转换常数(下面的raitio
)并更改格式以满足您要求的样式:
data = reshape(cell2mat(data1),297,258,[]);
S = size(data);
fnzc = zeros(S([1 3])); % first non zero in column
for k = 1:S(3)
csc = cumsum(data(:,:,k)>0,2); % on columns
fnzc(:,k) = csc(:,end);
end
ratio = 1.3*(10^(-6));
ax = axes;
plot(ax,(S(1):-1:1)*ratio,cumsum(fnzc,2)*ratio)
ax.XAxis.TickLabelFormat = '%2d';
ax.XAxis.Exponent = -6;
ax.YAxis.TickLabelFormat = '%2d';
ax.YAxis.Exponent = -6;
结果是:
我有 11 个二进制数据集,我想生成一个图表,其中包含数据集(所有 297x258)的相应数字的轨迹,其中 y 轴和 x 轴乘以比例(1.3 *10^(-6)) 并分别标记为 'Y-axis(μm)' 和 'X-axis (μm)'。 11 个数据集存储在一个单元格中(即 data1{1}
,...data1{11}
)。此外,如果绘图还可以用相应数据集的名称标记每个轨迹,我们将不胜感激(即 data1{1},...
)。
预期输出示例:
为了绘制此图,我首先在所有数据集的每一列中找到第一个非零元素,然后将它们相加以绘制彼此重叠的线条。
最后,我将轴乘以您提供的转换常数(下面的raitio
)并更改格式以满足您要求的样式:
data = reshape(cell2mat(data1),297,258,[]);
S = size(data);
fnzc = zeros(S([1 3])); % first non zero in column
for k = 1:S(3)
csc = cumsum(data(:,:,k)>0,2); % on columns
fnzc(:,k) = csc(:,end);
end
ratio = 1.3*(10^(-6));
ax = axes;
plot(ax,(S(1):-1:1)*ratio,cumsum(fnzc,2)*ratio)
ax.XAxis.TickLabelFormat = '%2d';
ax.XAxis.Exponent = -6;
ax.YAxis.TickLabelFormat = '%2d';
ax.YAxis.Exponent = -6;
结果是: