【问题标题】:plotting a sequence results in: "ValueError: x and y must have same first dimension"绘制序列导致:“ValueError:x 和 y 必须具有相同的第一维”
【发布时间】:2016-06-16 08:24:57
【问题描述】:

我是这里的初学者,在尝试绘制序列时遇到问题:

我的代码给了我这个错误信息: "ValueError: x 和 y 必须具有相同的第一维"

hold(True)
x=[0.5]
for r in arange(2,4,0.1):
    for i in range(170):
        xn= x[-1]
        xnp1 = r*xn*(1-xn)
        x.append(xnp1)
        xa=array(x)   
        rplot=0*xa+r
plot (rplot, xn,".")
show()

【问题讨论】:

    标签: python python-3.x matplotlib


    【解决方案1】:

    您正在尝试绘制 xn(因变量,又名“y 数据”)与 rplot(自变量,又名“x 数据”)。

    从您的代码中,您会看到xn 指的是数组x 中的最后一项,因此它是一个单个 标量。但是rplot 与数组x 一样长,因为您是这样设计的:

    rplot = 0*xa + r
    

    这就像将数字“1”绘制到多个 x 值(如 [1, 2, 3])。你可以看到这很令人困惑,对吧?

    目前尚不清楚您究竟想要绘制什么(哪些变量与哪些其他变量),但这篇文章确实回答了您为什么会收到该错误。也许它会帮助您找出您真正想要绘制的内容。

    根据收到的评论,您可能正在寻找以下代码:

    hold(True)
    x = [0.5]
    for r in arange(2,4,0.1):
        for _ in range(170):
            xn = x[-1]
            x.append( r*xn*(1 - xn) )
        rplot = np.full(len(x), r)            
        plot(rplot, x, ".")
    show()
    

    它为range(2, 4, .1) 中的每个r 绘制一个点数组,这些点取决于该值。 r 的特定值的点数组都具有相同的纵坐标,即r。它看起来像条纹。

    【讨论】:

    • 不幸的是,这似乎没有解决问题,我认为问题可能与“for r in arange(2,4,0.1):”行的位置有关,但我不确定
    • @BrigidMaloney 也许您可以提供有关要绘制的内容的更多详细信息(哪些变量针对哪些变量)。我已经看了你的代码一段时间了,但我完全不知道你会对什么感兴趣。
    • 对于每个定义为 xnp1 的 x 值,我想将其用作我的 y 值,我想在该范围内绘制一个 r 作为 x 值,这就是为什么我添加了一个 hold( True) 为了让落在同一位置的点被绘制而不是被擦除,因此可以为 r 的每个值实现多个值
    • @BrigidMaloney 也许我编辑的代码就是你要找的?注意缩进的变化。
    猜你喜欢
    • 2017-08-20
    • 2016-11-10
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    相关资源
    最近更新 更多