在Matlab中使用散射在原点(0,0)处相交X轴和Y轴

在Matlab中使用散射在原点(0,0)处相交X轴和Y轴,matlab,scatter-plot,Matlab,Scatter Plot,我有两个矩阵: X = [-1 -4 5 6] ; Y = [3 20 300 2] ; % Always > 0 scatter(x,y,4^2) 默认情况下,“散射”不会强制X和Y在原点(0,0)处交叉。有办法吗?请让我知道 如果您希望x和y网格线穿过原点(如示例中所示),我认为没有简单的方法可以做到这一点(有一个类似问题的讨论)。在MATLAB文件交换中,有一个似乎可以做你想做的事情。您必须参考其内部文档 另一种方法是手动设置x/y限制,并自己绘制一些轴: %Set l

我有两个矩阵:

X = [-1 -4 5 6]  ;
Y = [3 20 300 2] ;    %   Always > 0
scatter(x,y,4^2)

默认情况下,“散射”不会强制X和Y在原点(0,0)处交叉。有办法吗?请让我知道

如果您希望x和y网格线穿过原点(如示例中所示),我认为没有简单的方法可以做到这一点(有一个类似问题的讨论)。在MATLAB文件交换中,有一个似乎可以做你想做的事情。您必须参考其内部文档

另一种方法是手动设置x/y限制,并自己绘制一些轴:

%Set limits
xlim([-10 10]);
ylim([-300 300]);

hold on;
%Plot data
scatter(x, y);
%Plot axes
plot([0 0], [-300 300], 'k');
plot([-10 10], [0 0], 'k');
hold off;

但这将只绘制一个黑色十字,没有记号/数字等。

如果您希望x和y网格线穿过原点(如示例中所示),我认为没有简单的方法可以做到这一点(有一个类似问题的讨论)。在MATLAB文件交换中,有一个似乎可以做你想做的事情。您必须参考其内部文档

另一种方法是手动设置x/y限制,并自己绘制一些轴:

%Set limits
xlim([-10 10]);
ylim([-300 300]);

hold on;
%Plot data
scatter(x, y);
%Plot axes
plot([0 0], [-300 300], 'k');
plot([-10 10], [0 0], 'k');
hold off;
但这将只绘制一个黑色十字,没有记号/数字等。

如果您不想使用上述链接提供的非常基本的工具,那么在文件交换上有一些很好的解决方案,尽管后者使用了一些未记录的功能


如果您不想使用上述链接提供的非常基本的工具,那么在文件交换上有一些很好的解决方案,尽管后者使用了一些未记录的功能

谢谢。第一个链接对我很有用。我以前看过,但我想看看是否有其他解决方案。谢谢。第一个链接对我很有用。我以前看过,但我想看看是否有其他解决方案。