【问题标题】:Scatter with line segments带线段的散点图
【发布时间】:2020-05-04 19:20:25
【问题描述】:

我真的很喜欢scatter() 能够根据一些值向量自动为点着色,我只想在点之间添加彩色线条。

有问题的图在 x 轴上有时间,在 y 轴上有蒙特卡罗数,然后是一些测量值作为颜色向量(例如,在视频帧中看到的汽车数量)。

基本上,每个点都是系统中的一个更新。因此,调用scatter(time,monte_carlo_number,[],color_vec) 会绘制系统中存在更新的点,颜色代表某个值。这很好,但我想添加连接这些点的线段,每个线段都匹配 color_vec 指定的颜色。

基本工作示例

% Create example data
data = table();
data.time        = randsample(1:100, 1000, true)';
data.mc          = randsample(1:50, 1000, true)'; % actual monte-carlo run number labels are sorted
data.color_value = randsample(1:10, 1000, true)';


% Create the scatter plot
scatter(data.time, data.mc, [] , data.color_value, 'filled')
colorbar('Ticks', unique(data.color_value))
% Always label your axes
xlabel('Time (s)')
ylabel('Monte-Carlo Run Number')

以下是此代码可能产生的内容的屏幕截图。如果color_value 是视频帧中看到的汽车数量,我们可以看到每次通过点更新这个值。但是,如果有线以正确的颜色将每个点连接到下一个点,则人类更容易阅读此图。这向查看者表明,该值会及时持续到下一次更新。

【问题讨论】:

  • 在我看来,这对于 SO 来说听起来很笼统。您需要按照定义颜色箱的方式做一些事情,例如15-25,然后找到所述箱内的所有点并定义如何绘制线(所有点到所有点?顺序?Delaunay?)。然后将所有这些东西叠加在一起(对我来说听起来像是一团糟)。
  • 我是否正确理解您的问题,即您想将所有蓝色(ish)点连接在一起(比如 1 到 4)、青色(比如 4 到 6)等等?
  • 我希望每个点都有一条相同颜色的线在时间上向前移动,在下一个时间点结束。这有意义吗?
  • 在您的示例中,每个“汽车”或颜色点每次都可以出现多次(我运行了您的代码并看到了它)那么时间的方向是什么?这个问题没有很好的定义。

标签: matlab


【解决方案1】:

这样的?我将样本数更改为 100,它已经很乱了,所以我认为这不会让观众理解所绘制的内容。

% Create example data
data = table();
np = 100;
data.time        = randsample(1:100, np, true)';
data.mc          = randsample(1:50, np, true)'; % actual monte-carlo run number labels are sorted
data.color_value = randsample(1:10, np, true)';


vals = unique(data.color_value).';
cmap = parula(numel(vals));

colors = [];
for k = 1:numel(vals)
    ind = find(data.color_value == vals(k));
    data_sel{k} = sortrows(data(ind,:));
    colors(k,:) = cmap(k,:);
end


figure(1); clf;
% Create the scatter plot
scatter(data.time, data.mc, [] , data.color_value, 'filled')
hold on
for k = 1:numel(vals)
    plot(data_sel{k}.time, data_sel{k}.mc, 'Color',colors(k,:))
end
colorbar('Ticks', unique(data.color_value))
% Always label your axes
xlabel('Time (s)')
ylabel('Monte-Carlo Run Number')

【讨论】:

    猜你喜欢
    • 2012-10-13
    • 2012-11-25
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 2011-07-14
    • 2021-11-11
    • 1970-01-01
    相关资源
    最近更新 更多