在 Matplotlib 上绘图时出现问题
Problems while plotting on Matplotlib
我在创建函数的基本绘图时使用 python matplotlib 时遇到问题,在 wolfram alpha 和其他绘图引擎中,最终绘图似乎与我通过创建的绘图非常不同matplotlib.
我遵循了 matplotlib 中的示例,我只是将 np.sin(x) 函数替换为我需要绘制的函数。
我正在使用几个函数,所以这是我需要绘制的第一个函数,但它根本不起作用。
这是我正在使用的代码和前面的情节比较。
__author__ = 'alberto'
#
import numpy
import matplotlib.pyplot as plt
#
x = numpy.arange(-20, 20, 0.1)
y = ((3*x**2) + 12/(x**3) - 5)
plt.plot(x, y)
plt.show()
Wolfram
Matplotlib.
我正在使用 Anaconda Python(2.7.8)。
祝你有美好的一天!!!
您必须手动限制垂直尺寸!
这是一个可能的解决方案:
import numpy
import matplotlib.pyplot as plt
x = numpy.arange(-20, 20, 0.1)
y = ((3*x**2) + 12/(x**3) - 5)
plt.plot(x, y)
plt.ylim(-50, 100)
plt.show()
注意plt.ylim
函数!
如果您查看轴标签,您会发现 matplotlib 向您显示的视图 window 比 Wolfram Alpha 大得多。 Wolfram alpha 大致向您显示 -4 <= x <= 4
和 -50 <= y <= 100
,但 matplotlib 向您显示 -20 <= x <= 20
和巨大的 y 限制。
要获得可比较的图表,请设置视图限制:
plt.xlim(-4, 4)
plt.ylim(-50, 100)
您可以通过将 nan
分配给极值来调用 plt.plot 生成两条断开连接的曲线(从而处理渐近线)。 Mathematica 会自动为您处理; matplotlib 需要你做一些工作:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-20, 20, 1000)
y = ((3*x**2) + 12/(x**3) - 5)
mask = np.abs(y) > 100
y[mask] = np.nan
plt.plot(x, y)
plt.grid()
plt.show()
产量
我在创建函数的基本绘图时使用 python matplotlib 时遇到问题,在 wolfram alpha 和其他绘图引擎中,最终绘图似乎与我通过创建的绘图非常不同matplotlib.
我遵循了 matplotlib 中的示例,我只是将 np.sin(x) 函数替换为我需要绘制的函数。
我正在使用几个函数,所以这是我需要绘制的第一个函数,但它根本不起作用。
这是我正在使用的代码和前面的情节比较。
__author__ = 'alberto'
#
import numpy
import matplotlib.pyplot as plt
#
x = numpy.arange(-20, 20, 0.1)
y = ((3*x**2) + 12/(x**3) - 5)
plt.plot(x, y)
plt.show()
Wolfram
Matplotlib.
我正在使用 Anaconda Python(2.7.8)。
祝你有美好的一天!!!
您必须手动限制垂直尺寸! 这是一个可能的解决方案:
import numpy
import matplotlib.pyplot as plt
x = numpy.arange(-20, 20, 0.1)
y = ((3*x**2) + 12/(x**3) - 5)
plt.plot(x, y)
plt.ylim(-50, 100)
plt.show()
注意plt.ylim
函数!
如果您查看轴标签,您会发现 matplotlib 向您显示的视图 window 比 Wolfram Alpha 大得多。 Wolfram alpha 大致向您显示 -4 <= x <= 4
和 -50 <= y <= 100
,但 matplotlib 向您显示 -20 <= x <= 20
和巨大的 y 限制。
要获得可比较的图表,请设置视图限制:
plt.xlim(-4, 4)
plt.ylim(-50, 100)
您可以通过将 nan
分配给极值来调用 plt.plot 生成两条断开连接的曲线(从而处理渐近线)。 Mathematica 会自动为您处理; matplotlib 需要你做一些工作:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-20, 20, 1000)
y = ((3*x**2) + 12/(x**3) - 5)
mask = np.abs(y) > 100
y[mask] = np.nan
plt.plot(x, y)
plt.grid()
plt.show()
产量