【问题标题】:Overwrite the same plot覆盖相同的情节
【发布时间】: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


【解决方案1】:

这是您可以做的一个最小示例:

import matplotlib.pyplot as plt

def plotResult(x):
    plt.plot(x,x,'o')

plt.figure()
# Add new plots to the figure
plotResult(1) 
plotResult(2)
plotResult(3)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 2014-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多