Python:直观地查看某个物品使用一段时间之后每天的平摊价格
1、问题
买了一副眼镜,花了 800 块钱,感觉很贵,然后我在心里突然思考,这个眼镜如果买了一天就不见了,那么相当于我这一天使用的成本是 800 块钱。如果使用了 4 天之后才不见,那么我这四天每天使用的成本就是 200 块钱。也就是说如果这一副眼镜我用的时间越多,每天所花费的使用成本就越低。那么我想要每天的使用成本低于 5 毛钱,至少要花费多少时间呢?
带着这个问题,我用 Python 写了一个简单的程序,使用 Matplotlib 来可视化,很直观地就看到要花多少时间才能够每天的平摊价格达到自己可接受的程度。
可以看到至少要使用 4 年半,才可以使得每天的使用成本低于 0.5 元。也就是说,我要好好地保养买的这个眼镜,至少要保证可以用到 4.5 年才行。
2、代码
下面是画出上面这个图的 Python 代码:
对于 Matplotlib 有一些好用的函数可以讲一下:
plt.axline
用于画直线(无限长的线)的函数:**kwargs
是指定 2D 曲线的属性,比如线宽(linewidth)、颜色(color)、线型(linestyle)。plt.axline(xy1, xy2=None, *, slope=None, **kwargs)
:其中xy1
为直线通过的第一个点,xy2
为第二个点,也可以不提供第二个点而是提供斜率slope
;plt.axhline(y=0, xmin=0, xmax=1, **kwargs)
:画一条值在y
的平行线,xmin
和xmax
的值指定为 0 到 1 之间,其中 0 是图的最左边,1 是图的最右边;plt.axvline(x=0, ymin=0, ymax=1, **kwargs)
:画一条值在x
的平行线,ymin
和ymax
的值指定为 0 到 1 之间,其中 0 是图的最底端,1 是图的最上端。plt.annotate(text, xy, xytext=None, ..., arrowprops=None)
用于画出注释的函数:text
是注释的内容,xy
是注释指向的点的位置,xytext
是注释文本的位置,arrowprops
是指定箭头格式(arrowstyle)的一个字典(dict);plt.xticks(ticks=None, labels=None, *, minor=False, **kwargs)
改变坐标显示刻度:ticks
为要替换的原刻度,labels
为新的刻度,如果将ticks
设为空则代表不显示坐标刻度。minor
如果为False
代表设定主坐标轴,为True
代表设定次坐标轴。
在本文的代码中将原来表示天数的刻度 old_xticks
替代为代表年的 new_xticks
。
版权声明: 本文为 InfoQ 作者【强劲九】的原创文章。
原文链接:【http://xie.infoq.cn/article/24fc63c5dedee7b74bae0494d】。文章转载请联系作者。
评论