Scatter plot legend marker size is huge
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
The legend icons in my scatter plot are huge in the saved PDF (they look fine in the Matalb figure pop-up window). I tried some of the solutions I found in the MATLAB Answers forum and StackExchange, but no luck.
Self-contained code is below; any help is appreciated.
%%% dummy data and plots
x = randi([1,100],50,1);
y = randi([1,25],50,1);
g = randi([1,4],50,1);
allData = array2table([x y g]);
allData.Properties.VariableNames = {'x', 'y', 'g'};
nplts = 12;
colors = {'black', 'magenta', 'blue', 'green', 'cyan'};
for ii = 1:nplts
ax(ii) = subplot(nplts/3, 3, ii);
groups = unique(allData.g);
% note gscatter doesn't work well here because real data has
% NaNs mixed in that I am deleting, which is why I am looping
% through the groups
for jj = 1:length(groups)
tempGroup = groups(jj);
tempTable = allData(allData.g == tempGroup, :);
xy = [tempTable.x tempTable.y]; % do this to remove NaN in real data, not in this pretend data
xy(any(isnan(xy), 2), :) = []; % do this to remove NaN in real data, not in this pretend data
mycolor = colors{jj};
scatter(xy(:,1), xy(:,2), 8, mycolor, 'HandleVisibility', 'off')
hold on
label = char(strcat('Group =', num2str(tempGroup), {' '}, 'n=', num2str(length(xy))));
scatter([1,1], [1,1], NaN, mycolor, 'DisplayName', label); % dummy plot for legend
end
box on; grid on
set(gcf, 'Resize', 'off')
xlabel('x', 'FontSize', 10)
ylabel('y', 'FontSize', 10)
plotname = char(strcat('My_Plot', {' '}, num2str(ii)));
title(plotname, 'FontSize', 10, 'Interpreter', 'None')
lgd = legend;
lgd.FontSize = 6; lgd.Location = 'southoutside';
H = findobj('type', 'legend');
icons = findobj(H, 'type', 'patch'); % doesn't work
%icons = findobj(H, '-property', 'Marker', '-and', '-not', 'Marker', 'none'); % also doesn't work
set(icons, 'MarkerSize', 1);
end
linkaxes(ax, 'xy')
%%% save to pdf
h = gcf;
set(h, 'PaperPositionMode', 'auto')
set(h, 'PaperUnits', 'inches')
set(h, 'PaperSize', [11, 17])
set(h, 'PaperPosition', [0, 0, 11, 17])
print('myfigure', '-r300', '-dpdf')
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/253516/image.jpeg)
0 Kommentare
Antworten (1)
Siehe auch
Kategorien
Mehr zu Data Distribution Plots finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!