繁体   English   中英

只有Python中允许的点或散点图:在循环中绘制特征值

[英]Only point or scatter plot allowed in Python: plotting eigenvalues in a loop

我有以下简单的代码:

import numpy as np
import matplotlib.pyplot as plt
from scipy import linalg 


for i in range(10):

        M=np.array([[i**2,0],[0,i**3]]) # 2 x 2 matrix
        eval,evec=np.linalg.eig(M)

        # Plotting first and second eigenvalues
        # Style 1
        plt.plot(i,eval[0])
        plt.plot(i,eval[1])
                         # Doesn't work
        # Style 2
        plt.plot(i,eval[0], '-r')
        plt.plot(i,eval[1], '-b')
                         # Doesn't work

        # Style 3
        plt.plot(i,eval[0], 'ro-')
        plt.plot(i,eval[1], 'bs')
                        # Does work

plt.xlabel('x')
plt.ylabel('y')
plt.savefig('plot.png')
plt.show()

在绘制三种不同样式时,只有第三种样式(即点或散点图)成功运行。 因此,我的定制选项非常有限。 任何出路?

此外,这三种不同风格的图可以保存到三个不同的文件中,而无需单独创建三个for循环吗?

输出如下。 在此输入图像描述

将绘图移动到计算发生的循环外部。 为了绘制连接线,绘图函数需要一个值数组。

import numpy as np
import matplotlib.pyplot as plt
from scipy import linalg 

yvals=[]
for i in range(10):

    M=np.array([[i**2,0],[0,i**3]]) # 2 x 2 matrix
    eval_,evec=np.linalg.eig(M)
    yvals.append(eval_)

yvals=np.array(yvals)
xvals=np.array(range(10))
plt.plot(xvals,yvals[:,0],'-r')
plt.plot(xvals,yvals[:,1],'-b')

你现在所有的绘图风格都应该有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM