【问题标题】:drawing a line between two plotted points in python [duplicate]在python中的两个绘图点之间画一条线[重复]
【发布时间】:2021-09-03 11:36:25
【问题描述】:

python 新手,想尝试编写 x3+1 函数(如果一个数是奇数,则乘以 3,然后我们加 1,如果是偶数,则该数除以 2。继续最多 1,因为在那之后它只是在自身上循环)。我设法编写了代码,但我真的想在图表中实现它?

import matplotlib.pyplot as plt

def x3Graph(b):
    inc = 1
    plt.plot((inc*4), b, 'ko', ms=1)
    switch = 1
    while(switch == 1):
        if((b % 2) == 0):
            b = b/2
            inc = inc + 1
            plt.plot((inc*4), b, 'ko', ms=1)
        elif(b != 1):
            b = 3*b+1
            inc = inc + 1
            plt.plot((inc*4), b, 'ko', ms=1)
        else:
            inc = inc + 1
            switch = 2
    ax = plt.subplot(111)
    ax.plot((inc*4), b, 'ko', ms=1)
    ax.spines['right'].set_visible(False)
    ax.spines['top'].set_visible(False)
    ax.tick_params(labelbottom=False)
    plt.show()

what it looks like for 17

我将每个数字设置为 4 的差异,所以真正使用的唯一轴是左侧轴,底部轴仅用于将每个点彼此分开。问题是我不能使用 x=[a,b] 方法来画线,所以我不知道该怎么做。请记住,我是 python 的极端初学者。有什么办法可以实现我的想法吗? (每个点之间的线)

【问题讨论】:

  • 您需要创建两个列表,一个用于inc 值,另一个用于b 值。并在每个步骤中附加值。您无需在每一步都绘制,而是在最后绘制一次列表 (plt.plot(inc_list, b_list, '-ko'))。顺便说一句,没有充分的理由使用inc * 4 而不仅仅是inc

标签: python matplotlib


【解决方案1】:

如果你愿意

如果一个数是奇数,它被乘以3然后我们加1,如果是偶数,这个数被除以2

然后您可以使用列表推导来创建 y 轴:

import matplotlib.pyplot as plt

x = range(2,100)
y = [i/2 if i%2 == 0 else i*3+1 for i in x]
plt.plot(x,y)

输出:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    相关资源
    最近更新 更多