Python使用matplotlib庫繪製柱形圖
使用方法都寫在程序裏面的註釋中,請盡情享用,如果您覺得不錯可以點個贊哦🙂
代碼如下:
# -*- coding:utf-8 -*-
from matplotlib import pyplot as plt
__author__ = 'Evan'
def plot(title, data_list=[], x_label=(), y_label=()):
"""
繪柱形圖
:param str title: 圖片標題
:param list data_list: 數據列表
:param tuple x_label: (X軸標籤,X軸刻度標籤)
:param tuple y_label:(Y軸標籤,Y軸刻度標籤)
:return:
"""
# 處理中文亂碼
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
item_range = range(len(data_list[0])) # 計算所有數據的長度
plt.title(title) # 添加標題
# 繪X軸刻度的第一個柱形圖(寬度0.4)
plt.bar(item_range, data_list[0], align='center',
alpha=0.8, width=0.4)
# 向右移動0.4 繪X軸刻度的第二個柱形圖(寬度0.4)
plt.bar([i+0.4 for i in item_range], data_list[1], align='center',
color='y', alpha=0.8, width=0.4)
plt.xlabel(x_label[0]) # 添加X軸標籤
plt.xticks([i+0.2 for i in item_range], x_label[1]) # 添加X軸刻度標籤(向右移動0.2居中擺放)
plt.ylabel(y_label[0]) # 添加Y軸標籤
plt.ylim(y_label[1]) # 設置Y軸的刻度範圍
# 爲X軸刻度的第一個柱形圖加數值標籤
for x, y in enumerate(data_list[0]):
plt.text(x, y+10, '%s' % round(y, 1), ha='center')
# 向右移動0.4 爲X軸刻度的第二個柱形圖添加數值標籤
for x, y in enumerate(data_list[1]):
plt.text(x+0.4, y+10, '%s' % round(y, 1), ha='center')
plt.show() # 顯示圖形
# plt.savefig('./example.jpg') # 保存圖片
if __name__ == '__main__':
city_title = '四個直轄市GDP大比拼'
data = [[100, 300, 500, 700], [200, 400, 600, 800]]
x_label_tuple = ('城市分佈', ['北京市', '上海市', '天津市', '重慶市'])
y_label_tuple = ('GDP', [50, 1000])
plot(title=city_title, data_list=data, x_label=x_label_tuple, y_label=y_label_tuple)
執行結果: