每个点大小不同的散点图

Scatter plot with different size for each point

我有几千个点要绘制(大约 10k),我想用 Matlab 绘制它们,但要为每个点确定不同的大小(如果可能的话,还要确定不同的颜色)。我试图为每个点绘制一个散点图,但与对所有点的单个散点调用相比,它非常慢。有没有一种方法可以在合理的时间内在 Matlab 中绘制多个点,每个点具有不同的属性?

如果用 Matlab 做不到,有没有办法用 gnuplot 做?

scatter(x, y, a, c) takes arguments x and y, and then a for size, and c for colour. a can either be a single scalar, or a vector with a size for each (x,y) point. c can be an RGB triplet,或向量,与 xy 大小相同。例如:

x = 1:4;
scatter(x, x, 10*x, x);

结果

所以在你的情况下,也许

scatter(xData, yData, [], 1:10000)

将导致您的数据具有不同的颜色,这取决于它在数据数组中的位置。

对于 gnuplot 来说很简单,假设你用 3 列编写你的数据文件,你所要做的就是

plot 'data.dat' u 1:2:3:3 with circles lc palette

HERE 您可以找到一些示例(如需帮助,请输入 help circles)。

如果你想要所谓的可变点数(点数与实轴无关)你可以使用:

plot 'data.dat' with points ps variable pt 7

HERE 您可以找到一些示例(如需帮助,请输入 help pointsize)。

对于 gnuplot,您可以组合 pointsize variablelinecolor variablelinecolor palette:

set xrange [0:10]
set samples 21
plot '+' using 1:1:(0.2*):1 with point pointsize variable linecolor palette pt 7 notitle