Python matplotlib绘图无曲线显示问题求助
问题解决:Matplotlib绘制积分曲线无线条显示
问题根源
你的代码中,for r in arange(0,5,0.01)循环只是不断将x赋值为当前r,最终x和r都只保留了循环的最后一个值(即4.99),而y和y1也只是对应这个单个x值的积分结果。plt.plot()传入单个数值时,默认不会绘制线条(仅绘制单个点,且无标记的话看不到),所以图表只有框架没有曲线。
修正后的代码
import scipy from numpy import arange import matplotlib.pyplot as plt def integral_function(x, a, b, c): return a*x**2 + b*x + c # 生成所有x值的数组 x_values = arange(0, 5, 0.01) # 对每个x值计算积分,收集为数组 y_values = [scipy.integrate.quad(integral_function, 0, x, args=(2,3,4))[0] for x in x_values] y1_values = [scipy.integrate.quad(integral_function, 0, x, args=(2,1,1))[0] for x in x_values] # 使用完整的x和y数组绘图 plt.plot(x_values, y_values) plt.plot(x_values, y1_values) plt.xlabel("r values") plt.ylabel("values of integration") plt.legend(["for a,b,c = 2,3,4","for a,b,c = 2,1,1"]) plt.title("integration of ax^2 + bx + c") plt.show()
关键修改点
- 直接生成完整的
x_values数组,替代原循环的单个赋值操作 - 使用列表推导式遍历每个x值,计算并收集对应的积分结果,得到完整的
y_values和y1_values数组 - 绘图时传入完整的x和y数组,
plt.plot()会自动连接所有点形成曲线
内容的提问来源于stack exchange,提问作者user23323344
相关产品推荐
相关产品推荐

