在每次更新期间迭代绘制图形

时间:2013-07-15 02:44:38

标签: python matplotlib

数据集由三个簇组成,每个簇都来自由mu_k和sigma_k参数化的高斯密度函数,k = 0,1,2。

我想用图表中的轮廓绘制这些2D样本,这些样本由其簇着色。

import matplotlib.pyplot as plt

% Docstring of function GM_generated_data().
% This function generated the data.
% y is a ndarray, with its elements y[i] = array([y1, y2]),
% z is a indicator variable which represents which cluster each y[i] belongs to, 
% z[i] \in {0, 1, 2}.
y, z = GM_generated_data(paras)

% Plot each point with its cluster color iteratively, 
colors = 'bgrcmykw'
for i in range(len(y)):
    plt.plot(y[i][0], y[i][1], 'o', color = colors[z[i]])
plt.show()

Q1。有更好的方法吗?

现在我需要更新指标变量z,这正好称为高斯混合模型的Gibbs采样。

iterations = 20
for iteration in range(iterations):
    ... % Operations update z
    plt.plot(y[i][0], y[i][1], 'o', color = colors[z[i]])
plt.show()

我想要展示的是在每次迭代中,我可以看到每个绘图步骤的变化过程。

问题。在Python中有一个方法可以做到这一点吗?就像MATLAB一样......暂停(0.5)......等等?

1 个答案:

答案 0 :(得分:1)

如果你不太关心哪个颜色是哪个簇,或者你想构建一个颜色图(这实际上非常简单),你可以在没有for循环(你的第一段代码)的情况下这样做:

plt.scatter(y[:,0],y[:,1],c=z,cmap='Paired')

(或代替'配对'为你的颜色图)。