每个点大小不同的散点图
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,或向量,与 x
和 y
大小相同。例如:
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 variable
和 linecolor variable
或 linecolor palette
:
set xrange [0:10]
set samples 21
plot '+' using 1:1:(0.2*):1 with point pointsize variable linecolor palette pt 7 notitle
我有几千个点要绘制(大约 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,或向量,与 x
和 y
大小相同。例如:
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 variable
和 linecolor variable
或 linecolor palette
:
set xrange [0:10]
set samples 21
plot '+' using 1:1:(0.2*):1 with point pointsize variable linecolor palette pt 7 notitle