Python绘制经济学预算线:如何反转直线斜率(保持坐标轴不变)
预算线斜率反转的解决方案
不用折腾坐标轴翻转或者数组反转,直接重新计算预算线的端点就行——这才是经济学上斜率反转的本质(相当于调整两种商品的价格比例,或者互换X/Y的约束逻辑)。
两种实现方式
方式1:直接指定目标端点
如果你明确要预算线从y轴的60(坐标(0,60))延伸到x轴的15(坐标(15,0)),直接用两点式生成直线:
import numpy as np import matplotlib.pyplot as plt # 生成x轴取值范围(从0到15) x = np.linspace(0, 15, 100) # 两点式推导直线方程:斜率=(0-60)/(15-0)=-4,y=60-4x y = 60 - 4 * x # 绘图(保持坐标轴范围不变) plt.plot(x, y, color='blue', label='反转斜率后的预算线') plt.xlabel('商品X数量') plt.ylabel('商品Y数量') plt.xlim(0, 20) # 按需调整x轴范围,和你原来的图一致即可 plt.ylim(0, 70) # 按需调整y轴范围,和你原来的图一致即可 plt.legend() plt.show()
方式2:基于原收入/价格调整
如果你的预算线是基于收入I、商品X价格Px、商品Y价格Py计算的,反转斜率本质是互换X和Y的价格(或者说把两种商品的约束逻辑互换):
import numpy as np import matplotlib.pyplot as plt # 原参数示例(替换成你自己的数值) I = 120 # 收入 Px = 2 # 商品X价格 Py = 8 # 商品Y价格 # 原预算线(供对比) x_old = np.linspace(0, I/Px, 100) y_old = (I - Px * x_old) / Py plt.plot(x_old, y_old, color='gray', linestyle='--', label='原预算线') # 反转斜率后的预算线:互换Px和Py的角色 x_new = np.linspace(0, I/Py, 100) y_new = (I - Py * x_new) / Px plt.plot(x_new, y_new, color='blue', label='反转后预算线') plt.xlabel('商品X数量') plt.ylabel('商品Y数量') plt.legend() plt.show()
关键说明
numpy.flip()只会翻转数组的元素顺序,不会改变直线的斜率逻辑;invert_xaxis()是翻转坐标轴方向,不符合你要保持坐标轴不变的需求;- 真正的斜率反转是改变预算线的约束方程,通过重新计算端点就能实现,完全不用动坐标轴。
内容的提问来源于stack exchange,提问作者Nathaniel C
相关产品推荐
相关产品推荐

