【问题标题】:matplotlib show a expection?matplotlib 显示异常?
【发布时间】:2017-11-22 06:49:43
【问题描述】:

我使用 matplotlib 绘制两个数组中值的结果,但结果显示了一个点 (0, 0),它不在我的数组中。其他点是正确的,但只有这一点。下面是我的代码。

import math
import numpy as np
import matplotlib.pyplot as plt

j=0
x=0.6

resx = np.zeros((100, 100))
rr=np.zeros((1, 100))
for r in np.linspace(2.4, 4, 100):
    rr[0,j] = r
    for i in range(0, 100):
        x = r * x * (1-x)
        resx[j,i] = x
    plt.plot(rr[0,:], resx[:,j], '.')
    j=j+1
plt.show()

【问题讨论】:

  • 你的代码有语法错误;你的结果数组不能包含任何东西,更不用说 (0, 0)
  • 对不起,我已经修改了。

标签: python matplotlib


【解决方案1】:

所以,问题在于如何填充两个数组 rrresx。在通过绘图之前打印出两个数组

print rr[0,:]
print resx[:,j]

会给你形式的数组

[ x_1 ... x_(j) x_(j+1) ... x_100 ]
[ y_1 ... y_(j) y_(j+1) ... y_100 ]

x_i=y_i=0 对应 i>j。如果这是有意的,并且您想避免绘制点 (0,0)(顺便说一下,您绘制了很多次),您可以根本不绘制最后一个 100-j 值:

import math
import numpy as np
import matplotlib.pyplot as plt

x=0.6

resx = np.zeros((100, 100))
rr=np.zeros((1, 100))
for j,r in enumerate(np.linspace(2.4, 4, 100)):

    # Populate x-array
    rr[0,j] = r

    # Populate y-array
    for i in range(0, 100):
        x = r * x * (1-x)
        resx[j,i] = x

    # Only plot last n-j values     
    plt.plot(rr[0,:j], resx[:j,j], '.') 

plt.show()

这会给你这样的东西:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多