在Python 3中使用matplotlib绘图,曲线不是连续的。

3

这是我的函数图形绘制程序,它很好用。但是有一个问题。

while 1==1:
    import numpy as np
    import matplotlib.pyplot as plt
    print("FUNCTION GRAPHER")
    def graph(formula,domain):
        x = np.array(domain)
        y = eval(formula)
        plt.plot(x, y)
        plt.show()
    def sin(x):
        return np.sin(x)
    def cos(x):
        return np.cos(x)
    def tan(x):
        return np.tan(x)
    def csc(x):
        return 1/(np.sin(x))
    def sec(x):
        return 1/(np.cos(x))
    def cot(x):
        return 1/(np.tan(x))
    formula=input("Function: y=")
    domainmin=int(input("Min X Value: "))
    domainmax=int(input("Max X Value: "))
    graph(formula, range(domainmin,domainmax))
    print("DONE!")

当我尝试使用非线性函数时,它并不是“曲线形状”的:
FUNCTION GRAPHER
Function: y=sin(x**2)
Min X Value: 0
Max X Value: 32

我无法上传图片,因为我的声望还不够...但是它非常尖锐,而且仅每1个单位绘制一个点。

1个回答

6
不要使用range(domainmin,domainmax),而是使用numpy.linspace(domainmin,domainmax, n_pts),其中n_pts是您想要的点数,例如200或其他大数字,因为您希望图形不那么锯齿状。可以在此处找到有关numpy.linspace的文档。
函数range只能处理整数,请参见此处的文档。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接