以下是我计划绘制的坐标,文件名是Coords:
x y
0.0110 0.1105
-0.2730 0.2559
0.3610 0.1528
-0.0077 -0.2520
-0.2412 -0.1979
0.0444 -0.0526
0.0543 -0.0076
-0.1710 0.1170
0.12741 -0.0448
0.0949 -0.0811
这是我的代码首先绘制散点图:
Hold on
%Plot Coordinate
For i=1:10
dot_size = 100;
scatter ( Coords(i,1) ,Coords(i,2), dot_size, 'filled', 'MarkerEdgeColor', 'k' );
end
%Draw line distance between each points
for i=1:10
for j=1:10
plot( [Coords(i,1) Coords(i,2)], [Coords(j,1) Coords(j,2)] );
end
end
Hold off
%Sets the size of the y and x axis
xlim( [ min( Coords(:,1)) max( Coords(:,1)) ] );
ylim( [ min( Coords(:,2)) max( Coords(:,2)) ] );
axis off;
以下是我得到的结果:
我不知道为什么到处画线。我还注意到即使在plot(x,y) = 0
时,线仍在被绘制。
我还想根据两点之间的距离来改变线条的粗细和不透明度:例如。较粗和较暗的线,用于点之间的短距离。如果两点之间的距离很长,则更薄/更轻。
我希望我的情节看起来像这样:
答案 0 :(得分:3)
你的线与散乱点不匹配的原因是你给plot
的坐标;坐标的顺序错误,因此它们没有正确定义线条。
我修改了您的代码以更正此问题。我将plot
替换为line
,但您也可以使用plot
替换f
。此外,我定义了anonymous functions g
和d
,以根据两端的距离n = 10; % number of points
dot_size = 100;
Coords = rand(n, 2);
% maximum possible length in your coordination plane:
L = norm([max(Coords(:,1))-min(Coords(:,1)),max(Coords(:,2))-min(Coords(:,2))]);
% this function defines the line width:
f = @(x) L / (x + 0.1); % 0.1 avoids huge line widths in very small distances
% this function defines the color:
g = @(x) x * [1 1 1] / L;
figure
hold on
for ii = 1:n-1
for jj = ii+1:n
d = norm([Coords(ii,1)-Coords(jj,1), Coords(ii,2)-Coords(jj,2)]);
line([Coords(ii,1) Coords(jj,1)], [Coords(ii,2) Coords(jj,2)], ...
'LineWidth', f(d), 'Color', g(d));
end
end
scatter (Coords(:,1), Coords(:,2), dot_size, 'filled', 'MarkerEdgeColor', 'k');
axis tight
axis off
定义每条线的颜色和粗细。您可以修改这些功能以获得不同的图形行为。
axis tight
使用此输出:
备注:强>
xlim( [ min( Coords(:,1)) max( Coords(:,1)) ] );
是一个将限制设置为尽可能最小的命令。它相当于您的for
和下一行。scatter
- 循环中,您应该尽量避免选择一对两点或同一点作为一条线的两侧。.chart-symbol {
-fx-padding: 10px;
}
,所以圆圈被绘制在顶部。答案 1 :(得分:2)
还有一个专门的MATLAB函数用于生成如下图:gplot
。
data = [
0.0110 0.1105
-0.2730 0.2559
0.3610 0.1528
-0.0077 -0.2520
-0.2412 -0.1979
0.0444 -0.0526
0.0543 -0.0076
-0.1710 0.1170
0.12741 -0.0448
0.0949 -0.0811]; % Coordinates
adjM = squareform(pdist(data)); %
adjM (adjM > 0) = 1; % Form adjacency matrix based on Euclidean distances
figure; gplot(adjM, data, '-o') % Plot figure based on coordinates and adjacency matrix
然后,根据自己的喜好进行自定义,例如:如果要更改标记类型,请删除轴,添加标记等。