人生苦短,我用 Python
前文傳送門:
小白學 Python 數據分析(2):Pandas (一)概述
小白學 Python 數據分析(3):Pandas (二)數據結構 Series
小白學 Python 數據分析(4):Pandas (三)數據結構 DataFrame
小白學 Python 數據分析(5):Pandas (四)基礎操作(1)查看數據
小白學 Python 數據分析(6):Pandas (五)基礎操作(2)數據選擇
小白學 Python 數據分析(7):Pandas (六)數據導入
小白學 Python 數據分析(8):Pandas (七)數據預處理
小白學 Python 數據分析(9):Pandas (八)數據預處理(2)
小白學 Python 數據分析(10):Pandas (九)數據運算
小白學 Python 數據分析(11):Pandas (十)數據分組
小白學 Python 數據分析(12):Pandas (十一)數據透視表(pivot_table)
小白學 Python 數據分析(13):Pandas (十二)數據表拼接
小白學 Python 數據分析(14):Pandas (十三)數據導出
小白學 Python 數據分析(16):Matplotlib(一)坐標系
坐標軸標題設置
各位同學好,我又來了,本文給大家帶來的是有關 Matplotlib 的一些基礎操作。
在前一篇文章中,我們介紹了如何使用 Matplotlib 繪制坐標系,本文我們接着介紹 Matplotlib 。
先看一個簡單的示例:
import matplotlib.pyplot as plt
x_data = ['2011','2012','2013','2014','2015','2016','2017']
y_data = [58000,60200,63000,71000,84000,90500,107000]
plt.xlabel('年份')
plt.ylabel('銷量')
plt.plot(x_data, y_data)
plt.show()
結果如下:
好像哪里不太對的樣子,橫軸和數軸的標題沒有顯示出來,看一下程序運行,沒有報錯,但是報出來一個警告:
RuntimeWarning: Glyph 24180 missing from current font.
這個警告的含義是 plt 畫圖是找不到字體,那么這里我們手動設置一下字體:
plt.rcParams['font.sans-serif']=['SimHei']
完整的樣例代碼如下:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
x_data = ['2011','2012','2013','2014','2015','2016','2017']
y_data = [58000,60200,63000,71000,84000,90500,107000]
plt.xlabel('年份')
plt.ylabel('銷量')
plt.plot(x_data, y_data)
plt.show()
結果如下:
這下顯示正常了。
我們還可以通過參數 labelpad
設置標題到坐標軸的距離,這里為了演示效果設置的距離稍微大了點:
plt.xlabel('年份', labelpad=50)
plt.ylabel('銷量', labelpad=50)
結果如下:
我們還可以通過參數對文本的相關屬性進行設置,下面看下一些常用的設置參數:
plt.xlabel('年份', labelpad=50, fontsize='xx-large', fontweight='bold', rotation='vertical', backgroundcolor='red')
plt.ylabel('銷量', labelpad=50)
先看結果:
xlabel 中常用的一些參數:
- fontsize : 設置字體大小,默認12,可選參數 ['xx-small', 'x-small', 'small', 'medium', 'large','x-large', 'xx-large']
- fontweight : 設置字體粗細,可選參數 ['light', 'normal', 'medium', 'semibold', 'bold', 'heavy', 'black']
- fontstyle : 設置字體類型,可選參數[ 'normal' | 'italic' | 'oblique' ],italic斜體,oblique傾斜
- verticalalignment : 設置水平對齊方式 ,可選參數 : 'center' , 'top' , 'bottom' ,'baseline'
- horizontalalignment : 設置垂直對齊方式,可選參數:left,right,center
- rotation : (旋轉角度)可選參數為:vertical,horizontal 也可以為數字
- alpha : 透明度,參數值0至1之間
- backgroundcolor : 標題背景顏色
- bbox : 給標題增加外框 ,常用參數如下:
- boxstyle 方框外形
- facecolor (簡寫fc)背景顏色
- edgecolor (簡寫ec)邊框線條顏色
- edgewidth 邊框線條大小
刻度設置
默認坐標軸是顯示 x y 的值,但是也可以自定義顯示不同的刻度,這里需要使用到的函數為 xticks
和 yticks
兩個函數:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
x_data = [2011,2012,2013,2014,2015,2016,2017]
y_data = [58000,60200,63000,71000,84000,90500,107000]
plt.xticks(x_data, ['2011年','2012年','2013年','2014年','2015年','2016年','2017年'])
plt.yticks(y_data)
plt.plot(x_data, y_data)
plt.show()
結果如下:
有些時候,由於數據脫敏的需要,我們不要顯示刻度,還可以這么寫:
plt.xticks(x_data, [])
plt.yticks(y_data, [])
這樣展現出來的圖形如下:
實際上,我們還有更狠的操作,直接關閉坐標軸:
plt.axis("off")
結果如下:
范圍設置
我們還可以對坐標軸的范圍進行設置,如下:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
x_data = [2011,2012,2013,2014,2015,2016,2017]
y_data = [58000,60200,63000,71000,84000,90500,107000]
plt.xlim(2011, 2020)
plt.ylim(50000, 90000)
plt.plot(x_data, y_data)
plt.show()
結果如下:
這里設置在 Y 軸上最大值為 90000 ,那么 2016 和 2017 對應的數據將會無法顯示,實際我們從得出的結果圖上也能看出這一點。
網格線設置
網格線默認是關閉的,我們可以通過函數 grid
修改參數 b
來開啟網格線,如下:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
x_data = [2011,2012,2013,2014,2015,2016,2017]
y_data = [58000,60200,63000,71000,84000,90500,107000]
plt.plot(x_data, y_data)
plt.grid(b=True)
plt.show()
結果如下:
我們不僅可開啟網格線,還可以通過參數 axis
來控制是開啟哪個軸的網格線:
# 開啟 x 軸網格線
plt.grid(b=True, axis='x')
# 開啟 y 軸網格線
plt.grid(b=True, axis='y')
圖例設置
圖例能對圖表起到注釋的作用,我們可以通過參數 label
對該圖表的圖例進行設置,示例如下:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
x_data = [2011,2012,2013,2014,2015,2016,2017]
y_data = [58000,60200,63000,71000,84000,90500,107000]
plt.plot(x_data, y_data, label = '折線圖')
plt.bar(x_data, y_data, label = '柱狀圖')
plt.legend()
plt.show()
結果如下:
圖表標題設置
圖表標題是用來概括整張圖表現的內容的,我們可以通過如下方式設置一張圖的標題:
plt.title(label='xxx 公司 xxx 產品銷量')
結果如下:
本文的內容就到這里了,下一篇我們介紹 Matplotlib 的常用圖表的示例,本文的示例代碼寫的有點亂,就不貼出來了,當然,如果經常看小編寫的文章的估計都找得到。
參考
https://blog.csdn.net/The_Time_Runner/article/details/89927708