绘图时如何纳入整数间的输入值以生成平滑曲线?
平滑曲线绘图解决方案
我的代码
import matplotlib.pyplot as plt import numpy as np xmin, xmax=-3,3 x= np.array(range(xmin, xmax+1)) y,ysqr,ycube = x,x**2,x**3 f, (ax1, ax2, ax3) = plt.subplots(1,3, figsize=(25,8)) ax1.plot(x, y) ax1.set_title('y=x') ax2.plot(x, ysqr) ax2.set_title('y=x^2') ax3.plot(x, ycube) ax3.set_title('y=x^3') plt.show()
问题
仅使用整数x值绘图,导致生成的曲线不够平滑。
需求
如何在绘图时纳入整数之间的x取值,以生成平滑的曲线?
解决方法
要生成平滑曲线,关键是让x轴包含足够多的非整数取值。可以用NumPy的linspace()函数替代range(),生成指定区间内的均匀分布数值。
修改后的代码:
import matplotlib.pyplot as plt import numpy as np xmin, xmax = -3, 3 # 在-3到3之间生成100个等间距数值,数量越多曲线越平滑 x = np.linspace(xmin, xmax, 100) y, ysqr, ycube = x, x**2, x**3 f, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(25, 8)) ax1.plot(x, y) ax1.set_title('y=x') ax2.plot(x, ysqr) ax2.set_title('y=x^2') ax3.plot(x, ycube) ax3.set_title('y=x^3') plt.show()
说明
np.linspace(xmin, xmax, 100)会生成从-3到3的100个均匀分布点,覆盖了整数之间的所有中间值,绘图时自然形成平滑曲线。- 可根据需要调整第三个参数(比如改为200)增加点数,进一步提升平滑度;减少点数则平滑度降低,按需调整即可。
内容的提问来源于stack exchange,提问作者Dron Bhattacharya
相关产品推荐
相关产品推荐

