【发布时间】:2019-08-08 08:09:15
【问题描述】:
我需要覆盖相同的情节。代码如下:
Python 版本:
def plotResults( data, w, C):
N = w.shape[0]
fig = plt.figure( figsize=(10,8) )
plt.scatter( *data.T, marker='.' )
for i in range(N-1):
for j in range(i,N):
if C[i,j]==1:
plt.plot( (w[i,0], w[j,0]), (w[i,1], w[j,1]), 'ro-', marker='')
plt.scatter( w[:,0], w[:,1], s = 40,c = 'y', marker = 's', edgecolors='k')
MATLAB 版本:
function PlotResults(X, w, C)
N = size(w,1);
plot(X(:,1),X(:,2),'.');
hold on;
for i=1:N-1
for j=i:N
if C(i,j)==1
plot([w(i,1) w(j,1)],[w(i,2) w(j,2)],'r','LineWidth',2);
end
end
end
plot(w(:,1),w(:,2),'ko','MarkerFaceColor','y','MarkerSize',10);
hold off;
axis equal;
grid on;
此函数在 for 循环中调用,它使用第一个散点图显示点(它们在每次迭代中都相同)。 在嵌套的 for 循环中,我在特定点之间绘制红线,在代码的最后一部分中,我添加了一些黄色圆圈,以识别红线的顶点。我还附上了 MATLAB 版本,其中三个图在同一个图中,并且变化发生在同一个图中。 我尝试了一些 plt.show() 或 plt.pause() 并且我还检查了我在其他帖子中找到的一些可能的解决方案,但我认为它们不适合我的情况。
【问题讨论】:
-
所以你的问题出在 Python 程序上吧?
-
是的,我想在同一个情节中进行更新。我想给你发一段 MATLAB 结果的视频,但我不知道怎么做。
-
好像不是同一个问题。每次调用该函数时,我都需要在同一个图中覆盖三个不同的图。在 MATLAB 中,这要归功于 hold_on() 和 hold_off() 的魔力
-
在您的代码中,您每次调用 plotResults 时都会创建一个新图形
标签: python matlab matplotlib plot