Initial commit for matlab
This commit is contained in:
579
references/graphics-visualization.md
Normal file
579
references/graphics-visualization.md
Normal file
@@ -0,0 +1,579 @@
|
||||
# Graphics and Visualization Reference
|
||||
|
||||
## Table of Contents
|
||||
1. [2D Plotting](#2d-plotting)
|
||||
2. [3D Plotting](#3d-plotting)
|
||||
3. [Specialized Plots](#specialized-plots)
|
||||
4. [Figure Management](#figure-management)
|
||||
5. [Customization](#customization)
|
||||
6. [Exporting and Saving](#exporting-and-saving)
|
||||
|
||||
## 2D Plotting
|
||||
|
||||
### Line Plots
|
||||
|
||||
```matlab
|
||||
% Basic line plot
|
||||
plot(y); % Plot y vs index
|
||||
plot(x, y); % Plot y vs x
|
||||
plot(x, y, 'r-'); % Red solid line
|
||||
plot(x, y, 'b--o'); % Blue dashed with circles
|
||||
|
||||
% Line specification: [color][marker][linestyle]
|
||||
% Colors: r g b c m y k w (red, green, blue, cyan, magenta, yellow, black, white)
|
||||
% Markers: o + * . x s d ^ v > < p h
|
||||
% Lines: - -- : -.
|
||||
|
||||
% Multiple datasets
|
||||
plot(x1, y1, x2, y2, x3, y3);
|
||||
plot(x, [y1; y2; y3]'); % Columns as separate lines
|
||||
|
||||
% With properties
|
||||
plot(x, y, 'LineWidth', 2, 'Color', [0.5 0.5 0.5]);
|
||||
plot(x, y, 'Marker', 'o', 'MarkerSize', 8, 'MarkerFaceColor', 'r');
|
||||
|
||||
% Get handle for later modification
|
||||
h = plot(x, y);
|
||||
h.LineWidth = 2;
|
||||
h.Color = 'red';
|
||||
```
|
||||
|
||||
### Scatter Plots
|
||||
|
||||
```matlab
|
||||
scatter(x, y); % Basic scatter
|
||||
scatter(x, y, sz); % With marker size
|
||||
scatter(x, y, sz, c); % With color
|
||||
scatter(x, y, sz, c, 'filled'); % Filled markers
|
||||
|
||||
% sz: scalar or vector (marker sizes)
|
||||
% c: color spec, scalar, vector (colormap), or RGB matrix
|
||||
|
||||
% Properties
|
||||
scatter(x, y, 'MarkerEdgeColor', 'b', 'MarkerFaceColor', 'r');
|
||||
```
|
||||
|
||||
### Bar Charts
|
||||
|
||||
```matlab
|
||||
bar(y); % Vertical bars
|
||||
bar(x, y); % At specified x positions
|
||||
barh(y); % Horizontal bars
|
||||
|
||||
% Grouped and stacked
|
||||
bar(Y); % Each column is a group
|
||||
bar(Y, 'stacked'); % Stacked bars
|
||||
|
||||
% Properties
|
||||
bar(y, 'FaceColor', 'b', 'EdgeColor', 'k', 'LineWidth', 1.5);
|
||||
bar(y, 0.5); % Bar width (0 to 1)
|
||||
```
|
||||
|
||||
### Area Plots
|
||||
|
||||
```matlab
|
||||
area(y); % Filled area under curve
|
||||
area(x, y);
|
||||
area(Y); % Stacked areas
|
||||
area(Y, 'FaceAlpha', 0.5); % Transparent
|
||||
```
|
||||
|
||||
### Histograms
|
||||
|
||||
```matlab
|
||||
histogram(x); % Automatic bins
|
||||
histogram(x, nbins); % Number of bins
|
||||
histogram(x, edges); % Specified edges
|
||||
histogram(x, 'BinWidth', w); % Bin width
|
||||
|
||||
% Normalization
|
||||
histogram(x, 'Normalization', 'probability');
|
||||
histogram(x, 'Normalization', 'pdf');
|
||||
histogram(x, 'Normalization', 'count'); % default
|
||||
|
||||
% 2D histogram
|
||||
histogram2(x, y);
|
||||
histogram2(x, y, 'DisplayStyle', 'tile');
|
||||
histogram2(x, y, 'FaceColor', 'flat');
|
||||
```
|
||||
|
||||
### Error Bars
|
||||
|
||||
```matlab
|
||||
errorbar(x, y, err); % Symmetric error
|
||||
errorbar(x, y, neg, pos); % Asymmetric error
|
||||
errorbar(x, y, yneg, ypos, xneg, xpos); % X and Y errors
|
||||
|
||||
% Horizontal
|
||||
errorbar(x, y, err, 'horizontal');
|
||||
|
||||
% With line style
|
||||
errorbar(x, y, err, 'o-', 'LineWidth', 1.5);
|
||||
```
|
||||
|
||||
### Logarithmic Plots
|
||||
|
||||
```matlab
|
||||
semilogy(x, y); % Log y-axis
|
||||
semilogx(x, y); % Log x-axis
|
||||
loglog(x, y); % Both axes log
|
||||
```
|
||||
|
||||
### Polar Plots
|
||||
|
||||
```matlab
|
||||
polarplot(theta, rho); % Polar coordinates
|
||||
polarplot(theta, rho, 'r-o'); % With line spec
|
||||
|
||||
% Customize polar axes
|
||||
pax = polaraxes;
|
||||
pax.ThetaDir = 'clockwise';
|
||||
pax.ThetaZeroLocation = 'top';
|
||||
```
|
||||
|
||||
## 3D Plotting
|
||||
|
||||
### Line and Scatter
|
||||
|
||||
```matlab
|
||||
% 3D line plot
|
||||
plot3(x, y, z);
|
||||
plot3(x, y, z, 'r-', 'LineWidth', 2);
|
||||
|
||||
% 3D scatter
|
||||
scatter3(x, y, z);
|
||||
scatter3(x, y, z, sz, c, 'filled');
|
||||
```
|
||||
|
||||
### Surface Plots
|
||||
|
||||
```matlab
|
||||
% Create grid first
|
||||
[X, Y] = meshgrid(-2:0.1:2, -2:0.1:2);
|
||||
Z = X.^2 + Y.^2;
|
||||
|
||||
% Surface plot
|
||||
surf(X, Y, Z); % Surface with edges
|
||||
surf(Z); % Use indices as X, Y
|
||||
|
||||
% Surface properties
|
||||
surf(X, Y, Z, 'FaceColor', 'interp', 'EdgeColor', 'none');
|
||||
surf(X, Y, Z, 'FaceAlpha', 0.5); % Transparent
|
||||
|
||||
% Mesh plot (wireframe)
|
||||
mesh(X, Y, Z);
|
||||
mesh(X, Y, Z, 'FaceColor', 'none');
|
||||
|
||||
% Surface with contour below
|
||||
surfc(X, Y, Z);
|
||||
meshc(X, Y, Z);
|
||||
```
|
||||
|
||||
### Contour Plots
|
||||
|
||||
```matlab
|
||||
contour(X, Y, Z); % 2D contour
|
||||
contour(X, Y, Z, n); % n contour levels
|
||||
contour(X, Y, Z, levels); % Specific levels
|
||||
contourf(X, Y, Z); % Filled contours
|
||||
|
||||
[C, h] = contour(X, Y, Z);
|
||||
clabel(C, h); % Add labels
|
||||
|
||||
% 3D contour
|
||||
contour3(X, Y, Z);
|
||||
```
|
||||
|
||||
### Other 3D Plots
|
||||
|
||||
```matlab
|
||||
% Bar3
|
||||
bar3(Z); % 3D bar chart
|
||||
bar3(Z, 'stacked');
|
||||
|
||||
% Pie3
|
||||
pie3(X); % 3D pie chart
|
||||
|
||||
% Waterfall
|
||||
waterfall(X, Y, Z); % Like mesh with no back lines
|
||||
|
||||
% Ribbon
|
||||
ribbon(Y); % 3D ribbon
|
||||
|
||||
% Stem3
|
||||
stem3(x, y, z); % 3D stem plot
|
||||
```
|
||||
|
||||
### View and Lighting
|
||||
|
||||
```matlab
|
||||
% Set view angle
|
||||
view(az, el); % Azimuth, elevation
|
||||
view(2); % Top-down (2D view)
|
||||
view(3); % Default 3D view
|
||||
view([1 1 1]); % View from direction
|
||||
|
||||
% Lighting
|
||||
light; % Add light source
|
||||
light('Position', [1 0 1]);
|
||||
lighting gouraud; % Smooth lighting
|
||||
lighting flat; % Flat shading
|
||||
lighting none; % No lighting
|
||||
|
||||
% Material properties
|
||||
material shiny;
|
||||
material dull;
|
||||
material metal;
|
||||
|
||||
% Shading
|
||||
shading flat; % One color per face
|
||||
shading interp; % Interpolated colors
|
||||
shading faceted; % With edges (default)
|
||||
```
|
||||
|
||||
## Specialized Plots
|
||||
|
||||
### Statistical Plots
|
||||
|
||||
```matlab
|
||||
% Box plot
|
||||
boxplot(data);
|
||||
boxplot(data, groups); % Grouped
|
||||
boxplot(data, 'Notch', 'on'); % With notches
|
||||
|
||||
% Violin plot (R2023b+)
|
||||
violinplot(data);
|
||||
|
||||
% Heatmap
|
||||
heatmap(data);
|
||||
heatmap(xLabels, yLabels, data);
|
||||
heatmap(T, 'XVariable', 'Col1', 'YVariable', 'Col2', 'ColorVariable', 'Val');
|
||||
|
||||
% Parallel coordinates
|
||||
parallelplot(data);
|
||||
```
|
||||
|
||||
### Image Display
|
||||
|
||||
```matlab
|
||||
% Display image
|
||||
imshow(img); % Auto-scaled
|
||||
imshow(img, []); % Scale to full range
|
||||
imshow(img, [low high]); % Specify display range
|
||||
|
||||
% Image as plot
|
||||
image(C); % Direct indexed colors
|
||||
imagesc(data); % Scaled colors
|
||||
imagesc(data, [cmin cmax]); % Specify color limits
|
||||
|
||||
% Colormap for imagesc
|
||||
imagesc(data);
|
||||
colorbar;
|
||||
colormap(jet);
|
||||
```
|
||||
|
||||
### Quiver and Stream
|
||||
|
||||
```matlab
|
||||
% Vector field
|
||||
[X, Y] = meshgrid(-2:0.5:2);
|
||||
U = -Y;
|
||||
V = X;
|
||||
quiver(X, Y, U, V); % 2D arrows
|
||||
quiver3(X, Y, Z, U, V, W); % 3D arrows
|
||||
|
||||
% Streamlines
|
||||
streamline(X, Y, U, V, startx, starty);
|
||||
```
|
||||
|
||||
### Pie and Donut
|
||||
|
||||
```matlab
|
||||
pie(X); % Pie chart
|
||||
pie(X, explode); % Explode slices (logical)
|
||||
pie(X, labels); % With labels
|
||||
|
||||
% Donut (using patch or workaround)
|
||||
pie(X);
|
||||
% Add white circle in center for donut effect
|
||||
```
|
||||
|
||||
## Figure Management
|
||||
|
||||
### Creating Figures
|
||||
|
||||
```matlab
|
||||
figure; % New figure window
|
||||
figure(n); % Figure with number n
|
||||
fig = figure; % Get handle
|
||||
fig = figure('Name', 'My Figure', 'Position', [100 100 800 600]);
|
||||
|
||||
% Figure properties
|
||||
fig.Color = 'white';
|
||||
fig.Units = 'pixels';
|
||||
fig.Position = [left bottom width height];
|
||||
```
|
||||
|
||||
### Subplots
|
||||
|
||||
```matlab
|
||||
subplot(m, n, p); % m×n grid, position p
|
||||
subplot(2, 2, 1); % Top-left of 2×2
|
||||
|
||||
% Spanning multiple positions
|
||||
subplot(2, 2, [1 2]); % Top row
|
||||
|
||||
% With gap control
|
||||
tiledlayout(2, 2); % Modern alternative
|
||||
nexttile;
|
||||
plot(x1, y1);
|
||||
nexttile;
|
||||
plot(x2, y2);
|
||||
|
||||
% Tile spanning
|
||||
nexttile([1 2]); % Span 2 columns
|
||||
```
|
||||
|
||||
### Hold and Overlay
|
||||
|
||||
```matlab
|
||||
hold on; % Keep existing, add new plots
|
||||
plot(x1, y1);
|
||||
plot(x2, y2);
|
||||
hold off; % Release
|
||||
|
||||
% Alternative
|
||||
hold(ax, 'on');
|
||||
hold(ax, 'off');
|
||||
```
|
||||
|
||||
### Multiple Axes
|
||||
|
||||
```matlab
|
||||
% Two y-axes
|
||||
yyaxis left;
|
||||
plot(x, y1);
|
||||
ylabel('Left Y');
|
||||
yyaxis right;
|
||||
plot(x, y2);
|
||||
ylabel('Right Y');
|
||||
|
||||
% Linked axes
|
||||
ax1 = subplot(2,1,1); plot(x, y1);
|
||||
ax2 = subplot(2,1,2); plot(x, y2);
|
||||
linkaxes([ax1, ax2], 'x'); % Link x-axes
|
||||
```
|
||||
|
||||
### Current Objects
|
||||
|
||||
```matlab
|
||||
gcf; % Current figure handle
|
||||
gca; % Current axes handle
|
||||
gco; % Current object handle
|
||||
|
||||
% Set current
|
||||
figure(fig);
|
||||
axes(ax);
|
||||
```
|
||||
|
||||
## Customization
|
||||
|
||||
### Labels and Title
|
||||
|
||||
```matlab
|
||||
title('My Title');
|
||||
title('My Title', 'FontSize', 14, 'FontWeight', 'bold');
|
||||
|
||||
xlabel('X Label');
|
||||
ylabel('Y Label');
|
||||
zlabel('Z Label'); % For 3D
|
||||
|
||||
% With interpreter
|
||||
title('$$\int_0^1 x^2 dx$$', 'Interpreter', 'latex');
|
||||
xlabel('Time (s)', 'Interpreter', 'none');
|
||||
```
|
||||
|
||||
### Legend
|
||||
|
||||
```matlab
|
||||
legend('Series 1', 'Series 2');
|
||||
legend({'Series 1', 'Series 2'});
|
||||
legend('Location', 'best'); % Auto-place
|
||||
legend('Location', 'northeast');
|
||||
legend('Location', 'northeastoutside');
|
||||
|
||||
% With specific plots
|
||||
h1 = plot(x1, y1);
|
||||
h2 = plot(x2, y2);
|
||||
legend([h1, h2], {'Data 1', 'Data 2'});
|
||||
|
||||
legend('off'); % Remove legend
|
||||
legend('boxoff'); % Remove box
|
||||
```
|
||||
|
||||
### Axis Control
|
||||
|
||||
```matlab
|
||||
axis([xmin xmax ymin ymax]); % Set limits
|
||||
axis([xmin xmax ymin ymax zmin zmax]); % 3D
|
||||
xlim([xmin xmax]);
|
||||
ylim([ymin ymax]);
|
||||
zlim([zmin zmax]);
|
||||
|
||||
axis equal; % Equal aspect ratio
|
||||
axis square; % Square axes
|
||||
axis tight; % Fit to data
|
||||
axis auto; % Automatic
|
||||
axis off; % Hide axes
|
||||
axis on; % Show axes
|
||||
|
||||
% Reverse direction
|
||||
set(gca, 'YDir', 'reverse');
|
||||
set(gca, 'XDir', 'reverse');
|
||||
```
|
||||
|
||||
### Grid and Box
|
||||
|
||||
```matlab
|
||||
grid on;
|
||||
grid off;
|
||||
grid minor; % Minor grid lines
|
||||
|
||||
box on; % Show box
|
||||
box off; % Hide box
|
||||
```
|
||||
|
||||
### Ticks
|
||||
|
||||
```matlab
|
||||
xticks([0 1 2 3 4 5]);
|
||||
yticks(0:0.5:3);
|
||||
|
||||
xticklabels({'A', 'B', 'C', 'D', 'E', 'F'});
|
||||
yticklabels({'Low', 'Medium', 'High'});
|
||||
|
||||
xtickangle(45); % Rotate labels
|
||||
ytickformat('%.2f'); % Format
|
||||
xtickformat('usd'); % Currency
|
||||
```
|
||||
|
||||
### Colors and Colormaps
|
||||
|
||||
```matlab
|
||||
% Predefined colormaps
|
||||
colormap(jet);
|
||||
colormap(parula); % Default
|
||||
colormap(hot);
|
||||
colormap(cool);
|
||||
colormap(gray);
|
||||
colormap(bone);
|
||||
colormap(hsv);
|
||||
colormap(turbo);
|
||||
colormap(viridis);
|
||||
|
||||
% Colorbar
|
||||
colorbar;
|
||||
colorbar('Location', 'eastoutside');
|
||||
caxis([cmin cmax]); % Color limits
|
||||
clim([cmin cmax]); % R2022a+ syntax
|
||||
|
||||
% Custom colormap
|
||||
cmap = [1 0 0; 0 1 0; 0 0 1]; % Red, green, blue
|
||||
colormap(cmap);
|
||||
|
||||
% Color order for lines
|
||||
colororder(colors); % R2019b+
|
||||
```
|
||||
|
||||
### Text and Annotations
|
||||
|
||||
```matlab
|
||||
% Add text
|
||||
text(x, y, 'Label');
|
||||
text(x, y, z, 'Label'); % 3D
|
||||
text(x, y, 'Label', 'FontSize', 12, 'Color', 'red');
|
||||
text(x, y, 'Label', 'HorizontalAlignment', 'center');
|
||||
|
||||
% Annotations
|
||||
annotation('arrow', [x1 x2], [y1 y2]);
|
||||
annotation('textarrow', [x1 x2], [y1 y2], 'String', 'Peak');
|
||||
annotation('ellipse', [x y w h]);
|
||||
annotation('rectangle', [x y w h]);
|
||||
annotation('line', [x1 x2], [y1 y2]);
|
||||
|
||||
% Text with LaTeX
|
||||
text(x, y, '$$\alpha = \beta^2$$', 'Interpreter', 'latex');
|
||||
```
|
||||
|
||||
### Lines and Shapes
|
||||
|
||||
```matlab
|
||||
% Reference lines
|
||||
xline(5); % Vertical line at x=5
|
||||
yline(10); % Horizontal line at y=10
|
||||
xline(5, '--r', 'Threshold'); % With label
|
||||
|
||||
% Shapes
|
||||
rectangle('Position', [x y w h]);
|
||||
rectangle('Position', [x y w h], 'Curvature', [0.2 0.2]); % Rounded
|
||||
|
||||
% Patches (filled polygons)
|
||||
patch(xv, yv, 'blue');
|
||||
patch(xv, yv, zv, 'blue'); % 3D
|
||||
```
|
||||
|
||||
## Exporting and Saving
|
||||
|
||||
### Save Figure
|
||||
|
||||
```matlab
|
||||
saveas(gcf, 'figure.png');
|
||||
saveas(gcf, 'figure.fig'); % MATLAB figure file
|
||||
saveas(gcf, 'figure.pdf');
|
||||
saveas(gcf, 'figure.eps');
|
||||
```
|
||||
|
||||
### Print Command
|
||||
|
||||
```matlab
|
||||
print('-dpng', 'figure.png');
|
||||
print('-dpng', '-r300', 'figure.png'); % 300 DPI
|
||||
print('-dpdf', 'figure.pdf');
|
||||
print('-dsvg', 'figure.svg');
|
||||
print('-deps', 'figure.eps');
|
||||
print('-depsc', 'figure.eps'); % Color EPS
|
||||
|
||||
% Vector formats for publication
|
||||
print('-dpdf', '-painters', 'figure.pdf');
|
||||
print('-dsvg', '-painters', 'figure.svg');
|
||||
```
|
||||
|
||||
### Export Graphics (R2020a+)
|
||||
|
||||
```matlab
|
||||
exportgraphics(gcf, 'figure.png');
|
||||
exportgraphics(gcf, 'figure.png', 'Resolution', 300);
|
||||
exportgraphics(gcf, 'figure.pdf', 'ContentType', 'vector');
|
||||
exportgraphics(gca, 'axes_only.png'); % Just the axes
|
||||
|
||||
% For presentations/documents
|
||||
exportgraphics(gcf, 'figure.emf'); % Windows
|
||||
exportgraphics(gcf, 'figure.eps'); % LaTeX
|
||||
```
|
||||
|
||||
### Copy to Clipboard
|
||||
|
||||
```matlab
|
||||
copygraphics(gcf); % Copy current figure
|
||||
copygraphics(gca); % Copy current axes
|
||||
copygraphics(gcf, 'ContentType', 'vector');
|
||||
```
|
||||
|
||||
### Paper Size (for Printing)
|
||||
|
||||
```matlab
|
||||
set(gcf, 'PaperUnits', 'inches');
|
||||
set(gcf, 'PaperPosition', [0 0 6 4]);
|
||||
set(gcf, 'PaperSize', [6 4]);
|
||||
set(gcf, 'PaperPositionMode', 'auto');
|
||||
```
|
||||
Reference in New Issue
Block a user