Python繪製子圖及子圖刻度的變換等問題

  1. 涉及到圖的對比會用到子圖形式展示,先看看效果
  2. 繪製代碼如下
accuracy_alexnet_clef = [78.05, 78.43, 78.65, 78.61, 78.69]
accuracy_resnet_clef  = [84.56, 84.84, 85.07, 85.01, 85.13]
accuracy_alexnet_office10 = [87.30, 87.57, 87.78, 87.72, 87.50]
accuracy_resnet_office10  = [96.31, 96.35, 96.62, 96.43, 96.15]
orders = ['2', '3', '5', '10', '20']
names = ['alexnet', 'resnet']

# 創建兩幅子圖
f, ax = plt.subplots(2,1,figsize=(6, 8))
# 第一根柱子偏移座標
x = [i for i in range(len(orders))]
# 第二根柱子偏移座標
x1 = [i + 0.35 for i in range(len(orders))]
# 兩幅子圖之間的間距
plt.subplots_adjust(wspace =0, hspace =0.4)

# 選擇第一幅圖
figure_1 = ax[0]

# 設置x軸偏移和標籤
figure_1.set_xticks([i+0.15 for i in x])
figure_1.set_xticklabels(orders)

# 設置y軸的範圍
figure_1.set_ylim(bottom=77,top=86)

# 繪製柱狀圖,x表示x軸內容,accuracy_alexnet_clef表示y軸的內容,alpha表示透明度,width表示柱子寬度
# label表示圖列
figure_1.bar(x, accuracy_alexnet_clef, alpha=0.7, width = 0.35, facecolor = '#4c72b0', label='Alexnet')
figure_1.bar(x1, accuracy_resnet_clef, alpha=0.7, width = 0.35, facecolor = '#dd8452', label='Resnet')

figure_1.set_ylabel('Accuracy%') # 設置y軸的標籤
figure_1.set_xlabel('Order') # 設置x軸的名稱
figure_1.set_title('Alexnet') # 設置圖一標題名稱
figure_1.legend() # 顯示圖一的圖例


# 選擇第二幅圖
figure_2 = ax[1]
figure_1.set_xticks([i+0.15 for i in x])
figure_1.set_xticklabels(orders)

figure_2.set_ylim(bottom=77,top=100)
figure_2.bar(x, accuracy_alexnet_office10,alpha=0.7,width = 0.35,facecolor = '#c44e52', label='Alexnet')
figure_2.bar(x1, accuracy_resnet_office10,alpha=0.7,width = 0.35,facecolor = '#5f9e6e', label='Alexnet')


# figure_2.bar(orders, accuracy_resnet_clef,alpha=0.7,width = 0.35,facecolor = '#dd8452')
figure_2.set_ylabel('Accuracy%')
figure_2.set_xlabel('Order')
figure_2.set_title('Resnet')
figure_2.legend()

f.suptitle('ImageCLEF_DA') # 設置總標題
plt.show()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章