【问题标题】:In MATLAB, how do I use legend with colormap in a scatter plot在 MATLAB 中,如何在散点图中使用带有颜色图的图例
【发布时间】:2014-10-03 17:58:08
【问题描述】:

在 MATLAB 中,如何在散点图中使用带有颜色图的图例?

例如:

colormap winter
xData = [1 2 3 4 5];
yData = [7 4 2 8 1];
col = [1 1 2 2 1];
h1 = scatter(xData, yData, 50, col,'s');
legend('one','two')

显然这个传说是错误的,因为它只显示“一个”。我知道我可以通过col 拆分数据并绘制两个散点图,但是在使用颜色图时必须有一种简单的方法来制作图例?

【问题讨论】:

  • 尝试gscatter 而不是scatter
  • 感谢@Daniel,但我认为 gscatter 不适用于此类数据?即 X 的每一行必须有一个 G 值。
  • legend 为每个数据集添加一个标签。在您的代码中,只有一组数据,即使您按“颜色”“拆分”了数据。

标签: matlab


【解决方案1】:

作为一种替代解决方案,它保留了 scatter() 样式,我建议在循环中使用 scatter,为每个组调用一次。因此我们创建了颜色图,它将被使用并手动分配颜色:

xData = [1 2 3 4 5];
yData = [7 4 2 8 1];
col = [1 1 2 2 1];
groups = unique(col);
nGroups = length(groups);
cmap = colormap(winter(nGroups));
figure
hold on
for iGroup = 1:nGroups
    group = groups(iGroup);
    idx = col==group;
    scatter(xData(idx), yData(idx), 50, cmap(iGroup,:),'s');
end
legend('one','two')

【讨论】:

  • 此解决方案破坏了散点的随机顺序,并将最后一种颜色置于其余颜色之上。
【解决方案2】:

这就是我使用gscatter 绘制数据的方式:

gscatter(xData,yData,col)
legend('one','two')

显然输出在光学上与scatter 不同,但如果您想按col 对点进行分组,gscatter 似乎是正确的选择

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    • 2012-12-05
    • 2021-07-11
    • 2018-01-14
    • 2021-10-29
    相关资源
    最近更新 更多