matplotlib添加子图(拼图功能)
我们已经知道,matplotlib是python中的一个十分好用的作图库,它的简单的使用方法可以在之前的随笔中找到。传送门:https://www.cnblogs.com/chester-cs/p/11879444.html
之前没有涉及到的是一个用途十分广泛的功能:子图(拼图功能),想象我们有四个对比曲线图,是一个问题不同的算法实现结果。假如一个图接一个图画的画太拖沓,我们又不想一上来就画在同一个画布上,那么这时我们就可以使用拼图功能。
没时间解释了,直接上代码。以四种排序算法的运行时间曲线为例:
fig = plt.figure() # 生成新的画布fig fig.set_size_inches(18.5, 10.5) # 调整画布为合适大小 ax1 = fig.add_subplot(221) # 关键点,我们考虑在画布中加入一个一个的子图,(221这种排列的含义不必多解释了吧) plt.plot(Size,INSERTSORT_Mean,'b') plt.plot(Size,INSERTSORT_Mean,'ro') plt.grid() # 画网格 plt.xlabel("Data Size") plt.ylabel("Time Cost /s") plt.title("INSERTSORT Timecost Mean") # 加上标题 ax2 = fig.add_subplot(222) plt.plot(Size,MERGE_SORT_Mean,'b') plt.plot(Size,MERGE_SORT_Mean,'ro') plt.grid() plt.xlabel("Data Size") plt.ylabel("Time Cost /s") plt.title("MERGESORT Timecost Mean") ax3 = fig.add_subplot(223) plt.plot(Size,HEAPSORT_Mean,'b') plt.plot(Size,HEAPSORT_Mean,'ro') plt.grid() plt.xlabel("Data Size") plt.ylabel("Time Cost /s") plt.title("HEAPSORT Timecost Mean") ax4 = fig.add_subplot(224) plt.plot(Size,QUICKSORT_Mean,'b') plt.plot(Size,QUICKSORT_Mean,'ro') plt.grid() plt.xlabel("Data Size") plt.ylabel("Time Cost /s") plt.title("QUICKSORT Timecost Mean")
效果是这样的:
上面一大串代码,但关键点很少:
- 生成一个独立的画布对象,不影响其他模块
- 在画布上一个一个的添加子图对象(subplot)
- 每次添加新的子图,画笔就会移动到新的子图上
只要遵循以上的步骤,就能实现作图的拼接了~