To construct a three-dimensional filled line chart with vertical reference markers, begin by preparing your dataset and rendering parameters. Load the source data and specify the positions where marker lines should intersect the X-axis:
% Load spectral or time-series data
load('experimental_data.mat');
% Assign coordinate variables
xCoord = massToCharge;
zCoord = signalIntensity;
% Define marker line positions along X-axis
refIndices = [12 28 45];
Configure a perceptually uniform colormap to distinguish between data series. Using a continuous color scheme enhances the visualization of subtle variations across samples:
% Generate colormap with scientific color palette
nSeries = size(zCoord, 2);
colorPalette = viridis(nSeries); % Alternative: lines(nSeries)
Render the filled areas and marker lines using a custom visualization functon that handles the patch creation and line overlay:
% Create 3D filled plot with reference markers
[fillHandles, markerHandles] = filledPlot3DWithMarkers(xCoord, zCoord, ...
colorPalette, 0.8, 0.6, refIndices);
% Configure axis labels
xlabel('M/Z Ratio');
ylabel('Sample Index');
zlabel('Relative Intensity');
% Set viewing perspective
azimuth = -40;
elevation = 35;
view(azimuth, elevation);
Refine the visualization aesthetics by adjusting grid lines, tick directions, and axis limits. Apply descriptive labels to categorical axes:
% Axis styling
ax = gca;
set(ax, 'Box', 'on', ...
'LineWidth', 1.0, ...
'GridLineStyle', ':', ...
'XGrid', 'on', ...
'YGrid', 'on', ...
'ZGrid', 'on', ...
'TickDir', 'out', ...
'TickLength', [0.02 0.02]);
% Custom Y-axis categorical labels
categories = {'Control', 'Treatment A', 'Treatment B', ...
'Treatment C', 'Treatment D'};
set(ax, 'YTick', 1:5, ...
'YTickLabel', categories, ...
'YLim', [0.5 5.5], ...
'ZLim', [0 1.2]);
% Uniform typography
set(ax, 'FontName', 'Arial', 'FontSize', 10);
set(findall(gcf, 'Type', 'text'), 'FontSize', 11, 'FontName', 'Arial');
set(gcf, 'Color', [1 1 1], 'Renderer', 'opengl');
Export the figure using high-resolution settings suitable for publication:
% Output configuration
fig = gcf;
set(fig, 'PaperUnits', 'centimeters', ...
'PaperPosition', [0 0 12 9]);
% Save to file
exportgraphics(fig, 'filled_3d_plot.pdf', 'Resolution', 300);