我有一个散点图,它将覆盖几组数据。每组数据当前显示为默认色彩映射中的下一个颜色。这是我现在的代码:
figure
hold on
for i=1:10
scatter(RunRawArea(i,:), RunRawNetLength(i,:));
end
hold off
我想要的是将每组数据(由i索引)的颜色编码为渐变的下一个颜色。例如,i = 1的数据为蓝色,i = 5为紫色,i = 10为红色。
我怎么能这样做?
答案 0 :(得分:1)
您应该向scatter
添加另一个参数 - 名为CData
https://www.mathworks.com/help/matlab/ref/scatter.html
描述:scatter(x,y)用圆圈创建散点图 在矢量x和y指定的位置。这种类型的图表 也被称为泡沫图。
在你的例子中:
figure
hold on
colorVec = linspace(1,0, size(RunRawNetLength,1));
colorVec = transpose(colorVec);
colorVec = repmat(colorVec,[1 3]);
for i=1:10
scatter(RunRawArea(i,:), RunRawNetLength(i,:),'CData', colorVec );
end
hold off
答案 1 :(得分:0)
方法1:
您可以对数据进行矢量化,因此您不需要循环而是按系列添加颜色:
% specify your color map:
colorCode = lines(size(RunRawNetLength,1)); % or any other colormap...
% define the correct color for each series:
coloVev = repmat(colorCode,size(RunRawNetLength,1),1);
% plot it all at once without a loop:
scatter(RunRawArea(:),RunRawNetLength(:),[],coloVev)
方法2:
如果您拥有统计和机器学习工具箱,您也可以使用gscatter
执行此操作:
% define the series of data:
group = repmat(1:size(RunRawNetLength,1),1,size(RunRawNetLength,1));
% plot it all at once without a loop:
gscatter(RunRawArea(:),RunRawNetLength(:),group,colorCode);
如果你的色彩图没有足够的颜色用于所有系列,那么函数会循环并从第一个开始。
<强>结果:强>
在这两种情况下,一些随机数据的结果都是(主要区别在于gscatter
填充数据点并默认添加图例):
请注意,我使用了只有7个条目的色彩图lines
,所以在本例中有10个系列,它会自行重复。