多子图画图数据标签堆在一个子图中
如图
代码如下:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = Falseplt.figure(figsize=(8,10), dpi=100)
plt.figure(1)plt.tight_layout()data=pd.read_excel(r'D:\资料下载\月报\月报数据\月报数据.xlsx','省公司-月份-检测应用数')
data=data.fillna(-1)
ax = plt.subplot(3,2,1)
ax1 = plt.subplot(3,2,2)
ax2 = plt.subplot(3,2,3)
ax3 = plt.subplot(3,2,4)
ax4 = plt.subplot(3,2,5)
ax5 = plt.subplot(3,2,6)
# 创建图实例
x = data.iloc[:,0]
label=list(data)
col=data.shape[1]
for i in range(1, int(col / 6) + 1):
ax.plot(x, data.iloc[:, i], label=label[i])
for a, b in zip(x, data.iloc[:, i]):
plt.text(a, b + 0.05, '%.0f' % b, ha='center', va='bottom', fontsize=9)
for m in range(int(col / 6)+1, int(col / 3) + 1):
ax1.plot(x, data.iloc[:, m], label=label[m])
for a, b in zip(x, data.iloc[:, m]):
plt.text(a, b + 0.05, '%.0f' % b, ha='center', va='bottom', fontsize=9)
for n in range(int(col / 3)+1, int(col / 2) + 1):
ax2.plot(x, data.iloc[:, n], label=label[n])
for a, b in zip(x, data.iloc[:, n]):
plt.text(a, b + 0.05, '%.0f' % b, ha='center', va='bottom', fontsize=9)
for o in range(int(col / 2)+1, int(col*2 / 3) + 1):
ax3.plot(x, data.iloc[:, o], label=label[o])
for a, b in zip(x, data.iloc[:, o]):
plt.text(a, b + 0.05, '%.0f' % b, ha='center', va='bottom', fontsize=9)
for p in range(int(col*2 / 3)+1, int(col*5 / 6) + 1):
ax4.plot(x, data.iloc[:, p], label=label[p])
for a, b in zip(x, data.iloc[:, p]):
plt.text(a, b + 0.05, '%.0f' % b, ha='center', va='bottom', fontsize=9)
for q in range(int(col*5 / 6) + 1, int(col) ):
ax5.plot(x, data.iloc[:, q], label=label[q])
for a, b in zip(x, data.iloc[:, q]):
plt.text(a, b + 0.05, '%.0f' % b, ha='center', va='bottom', fontsize=9)
ax.set_ylabel('检测应用数')#设置y轴名称 y label
ax.set_title('省公司检测应用数') #设置图名为Simple Plot
ax.legend() #自动检测要在图例中显示的元素,并且显示
ax1.set_title('省公司检测应用数') #设置图名为Simple Plot
ax1.legend() #自动检测要在图例中显示的元素,并且显示
ax2.set_ylabel('检测应用数') #设置y轴名称 y label
ax2.legend() #自动检测要在图例中显示的元素,并且显示
ax3.legend() #自动检测要在图例中显示的元素,并且显示
ax4.set_xlabel('月份') #设置x轴名称 x label
ax4.set_ylabel('检测应用数') #设置y轴名称 y label
ax4.legend() #自动检测要在图例中显示的元素,并且显示
ax5.set_xlabel('月份') #设置x轴名称 x label
ax5.legend() #自动检测要在图例中显示的元素,并且显示
plt.show()
plt.tight_layout()