Can MATLAB plot a graph like this? (Ignore the black lines and light blue areas; I only care about the red and blue points.)
28 ビュー (過去 30 日間)
古いコメントを表示
Hello everyone, I want to plot the image below. Please ignore the other parts; I'm mainly focused on the red and blue points. I know the scatter function can plot points of different sizes, but the issue is with the red legend next to it. Can MATLAB generate a legend like this, reflecting the size of the points? Looking forward to any responses.
0 件のコメント
回答 (2 件)
Cris LaPierre
2024 年 12 月 3 日 16:27
The legend isn't exactly the same, but conveys the relationship between size and value.
3 件のコメント
Cris LaPierre
約4時間 前
The only way I can think to do that would be to manually create it yourself. Essentially, you'd create a second axes next to your plot and then plot the circle sizes you want positioned the way you want them.
% create dummy data
t = 0:0.1:10;
y = sin(t);
sz = (y+1)*50;
figure
scatter(t,y,sz);
ax1 = gca;
% create legend
ax2 = axes('Position',[ax1.Position(1)+ax1.Position(3)+0.005 ax1.Position(2) 0.05 ax1.Position(4)]);
scatter(ax2,0,1:100,1:100,'r')
ax2.YAxisLocation = 'right';
xticks(ax2,[])
yticks(ax2,0:20:100)
yticklabels(0:2:10)
ylabel('log_{10}Q')
Cris LaPierre
約4時間 前
Here's perhaps a slightly cleaner way.
% create dummy data
t = 0:0.1:10;
y = sin(t);
sz = (y+1)*50;
tiledlayout(1,11)
nexttile([1 10])
scatter(t,y,sz);
ax = nexttile;
scatter(0,1:100,1:100,'r')
ylabel('log_{10}Q')
ax.YAxisLocation = 'right';
xticks([])
% Customimze the displayed size (may not be necessary)
yticks(0:20:100)
yticklabels(0:2:10)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!