首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用线段散布

使用线段散布
EN

Stack Overflow用户
提问于 2020-05-01 23:28:05
回答 1查看 74关注 0票数 0

我真的很喜欢scatter()的能力,它可以根据值的向量自动给点着色,我只想在点之间添加彩色线。

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

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

基本工作示例

代码语言:javascript
复制
% 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是在视频帧中看到的汽车数量,我们可以看到每次通过这些点更新这个值。但是,如果用正确的颜色将每个点与下一个点连接起来,人类就更容易阅读这个图。这向查看者表明,该值会一直持续到下一次更新。

EN

回答 1

Stack Overflow用户

发布于 2020-05-04 19:20:25

像这样的东西?我将样本数量更改为100,但它已经相当混乱了,所以我认为这不会让查看者理解绘制的内容。

代码语言:javascript
复制
% 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')

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61545475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档