import matplotlib.pyplot as plt
def plot_data(period, path, purchase_true, purchase_pre, redeem_true, redeem_pre):
x = []
for i in range(1, period+1):
x.append(i)
plt.plot(x, purchase_true, label="purchase_true")
plt.plot(x, purchase_pre, label="purchase_pre")
# 给y轴设置网格线
plt.grid(axis='y')
# 设置数字标签
for a, b in zip(x, purchase_true):
plt.text(a, b + 0.001, '%.4f' % b, ha='center', va='bottom', fontsize=9)
for a, b in zip(x, purchase_pre):
plt.text(a, b + 0.001, '%.4f' % b, ha='center', va='bottom', fontsize=9)
# 给图片加上图例
plt.legend()
# 保存图片
plt.savefig("../picture/" + path + "/purchase.png")
plt.show()
# -------------------------------------------------------一张图---------------------------------------
plt.plot(x, redeem_true, label="redeem_true")
plt.plot(x, redeem_pre, label="redeem_pre")
plt.grid(axis='y')
for a, b in zip(x, redeem_true):
plt.text(a, b + 0.001, '%.4f' % b, ha='center', va='bottom', fontsize=9)
for a, b in zip(x, redeem_pre):
plt.text(a, b + 0.001, '%.4f' % b, ha='center', va='bottom', fontsize=9)
plt.legend()
plt.savefig("../picture/" + path + "/redeem.png")
plt.show()
if __name__ == '__main__':
plot_data(period, purchase_true, purchase_pre, redeem_true, redeem_pre)
最近在做天池余额宝转入转出预测的工程。需要一些展示图片比较直观的图片,就稍微研究了一下作图。
有几点要注意一下:
首先,就是为什么要创建一个空的list x,因为这里要展示的是第一天到第三十一天的数据,所以横坐标x是每一天。因此要自己创建一个。
第二,就是给图片上加图例,就是 plt.legend(),不然只有线条,不知道每个线条代表什么
第三,就是保存图片plt.savefig()一定要在显示图片 plt.show()的前面不然会保存一张空的图片。
第四,就是一定要有 plt.show(),不然就是一闪而过。
第五,就是如果要在图片画两条曲线,就要两个plot命令,然后在show,就可以了。
第六,给图片设置网格线, plt.grid(axis='y')因为这里要显示y轴上的数字,因此只设置了y轴的网格线,x轴没有。
第七,设置数字标签。
for a, b in zip(x, purchase_true):
plt.text(a, b + 0.001, '%.4f' % b, ha='center', va='bottom', fontsize=9)
a, b+0.001表示在每一柱子对应x值、y值上方0.001处标注文字说明。
'%.4f' % b,代表标注的文字,即每个柱子对应的y值。
ha='center', va= 'bottom'代表horizontalalignment(水平对齐)、verticalalignment(垂直对齐)的方式,fontsize则是文字大小。







网友评论