python - 如何绘制二项式函数的图?

标签 python matplotlib

def fac(n):
    value = 1
    for i in range(2,n+1):
        value = value * i
    return value

def C(n,k):
    return fac(n)/(fac(k) * (fac(n-k)))

for k in range(1,100):
    for n in [10,20,30]:
        F=C(n,k)
plt.plot(k,F)
plt.legend()
plt.show()

我想将二项式函数绘制为 k 中的函数,对于某些 n 值,例如 n = 10, 20, 30, ...

但是,我不知道如何绘制它。

最佳答案

我怀疑,有一个特定的原因不使用 NumPy ,所以这是一个使用普通 Python 的解决方案。

如果您正在谈论 binomial distribution ,那么公式需要包含概率p。我在下面的代码中添加了这一点。 (如果您实际上只想拥有 binomical coefficient ,请删除两个 pow 项。)

一般来说,为了绘图,您需要在某些数组中收集 xy 值(例如 XY ),以便您可以使用 plt.plot(X, Y) 绘制整个函数。

在您的示例中,您还需要切换两个循环,因为您想要三个函数,每个函数对应 k = [1 ... 100]

这就是我的解决方案:

from matplotlib import pyplot as plt

def fac(n):
    value = 1
    for i in range(2, n+1):
        value = value * i
    return value

def C(n, k, p):
    return fac(n)/(fac(k) * (fac(n-k))) * pow(p, k) * pow(1-p, n-k)

for N in [10, 20, 30]:
    X = []
    Y = []
    for K in range(1, 100):
        X.append(K)
        Y.append(C(N, K, 0.5))
    plt.plot(X, Y)
plt.legend(('N = 10', 'N = 20', 'N = 30'))
plt.show()

生成的输出如下所示:

Output

希望有帮助!

----------------------------------------
System information
----------------------------------------
Platform:    Windows-10-10.0.16299-SP0
Python:      3.8.1
Matplotlib:  3.2.0rc1
----------------------------------------

关于python - 如何绘制二项式函数的图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59889957/

相关文章:

python - 如何创建一个 WTF 表单和 Flask 在计算后返回一个值?

python - 以文本文件和 oracle 表为源的 Hive、Pig 或 Python Mapreduce 哪个能提供最佳性能?

python - 有没有办法在 VSCode 的新窗口中打开图形?

python - PyQt5:RuntimeError:已删除 FigureCanvasQTAgg 类型的包装 C/C++ 对象

python - X-Axis Ticks labels by year 与 X-Axis gridlines by fiscal quarter

python - 读取文本文件并存储在列表列表中

python - 在 python 3.2 中启动和停止记录器

python - 如何用一定数量的子图填充图形?

python - 动画在 matplotlib 中没有动画

python - wxPython无法退出