圖表是比干巴巴的表格更直觀的表達,簡潔、有力。工作中經常遇到的場景是,有一些數值需要定時的監控,比如服務器的連接數、活躍用戶數、點擊某個按鈕的人數,并且通過郵件或者網頁展示出來。當我們想關注比數值本身更多的信息(像數值的變化、對比或異常),圖表就非常有用了。把數值轉化為圖片要依賴第三方庫的幫忙,在Python之中最好的圖表庫叫matplotlib。(一直覺得,Python最大的優勢就是豐富的第三方庫,讓你能輕易實現各種需求)
matplotlib,顧名思義就是提供了一整套和matlab相似的API,它的文檔相當完備,示例頁面提供了上百個圖表的入門代碼,可以說只有你想不到的,沒有它做不到的。
舉個稍復雜的例子,小明和小紅兩個同學各有語文、數學、英語的課程成績,用一個雙柱形圖輸出各項成績的對比:
#!/usr/bin/env python# coding: utf-8import matplotlib as mplmpl.use('Agg')import matplotlib.pyplot as pltimport numpy as np# 必須配置中文字體,否則會顯示成方塊# 注意所有希望圖表顯示的中文必須為unicode格式custom_font = mpl.font_manager.FontProperties(fname='/Library/Fonts/華文細黑.ttf')font_size = 10 # 字體大小fig_size = (8, 6) # 圖表大小names = (u'小明', u'小紅') # 姓名subjects = (u'語文', u'數學', u'英語') # 科目scores = ((65, 90, 75), (85, 80, 90)) # 成績# 更新字體大小mpl.rcParams['font.size'] = font_size# 更新圖表大小mpl.rcParams['figure.figsize'] = fig_size# 設置柱形圖寬度bar_width = 0.35index = np.arange(len(scores[0]))# 繪制「小明」的成績rects1 = plt.bar(index, scores[0], bar_width, color='#0072BC', label=names[0])# 繪制「小紅」的成績rects2 = plt.bar(index + bar_width, scores[1], bar_width, color='#ED1C24', label=names[1])# X軸標題plt.xticks(index + bar_width, subjects, fontproperties=custom_font)# Y軸范圍plt.ylim(ymax=100, ymin=0)# 圖表標題plt.title(u'企鵝班同學成績對比', fontproperties=custom_font)# 圖例顯示在圖表下方plt.legend(loc='upper center', bbox_to_anchor=(0.5, -0.03), fancybox=True, ncol=5, prop=custom_font)# 添加數據標簽def add_labels(rects): for rect in rects: height = rect.get_height() plt.text(rect.get_x() + rect.get_width() / 2, height, height, ha='center', va='bottom') # 柱形圖邊緣用白色填充,純粹為了美觀 rect.set_edgecolor('white')add_labels(rects1)add_labels(rects2)# 圖表輸出到本地plt.savefig('scores_par.png')最終圖表顯示如下:

總結
從上面的代碼片段可以了解到:matplotlib是一個自由度非常高的圖表庫,能夠實現從顏色、字體等基礎屬性到圖例、網格等圖表屬性的定制輸出。
以上就是本文關于python繪制雙柱形圖代碼實例的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站:
新聞熱點
疑難解答