matplotlib常用方法屬性詳解

gdp_dat.csv在文章末尾

 

 

方法講解

 

中文顯示錯誤問題

 

在繪圖中如果出現中文標籤或者負號,會無法正常顯示,可以使用以下解決方案:

 

import matplotlib.pyplot as plt

# 用來正常顯示中文標籤

plt.rcParams['font.sans-serif'] = ['SimHei']

# 用來正常顯示負號

plt.rcParams['axes.unicode_minus'] = False

 

 

 

 

 

設置x軸的標籤

 

例子:

 

import matplotlib.pyplot as plt

 

# 設置座標的標籤

plt.xlabel('花瓣長度')

 

 

 

ylabel

 

設置y軸的標籤

 

與設置x軸標籤類似

 

 

 

 

legend

 

設置圖例位置

 

例子:

 

import matplotlib.pyplot as plt

 

# 表示圖例將添加在圖中的左上角

plt.legend(loc= 'upper left')

 

 

 

show

 

展示繪製好的圖形

 

例子:

 

import matplotlib.pyplot as plt

 

plt.show()

 

 

 

 

plot

 

繪製曲線圖。注意:曲線圖如果出現x或者y軸無序的情況,那是因爲數據類型沒轉成數字類型的

 

例子:

 

 

import matplotlib.pyplot as plt

import pandas as pd

 

# 用來正常顯示中文標籤

plt.rcParams['font.sans-serif'] = ['SimHei']

 

gdp_data = pd.read_csv('gdp_data.csv')

 

gdp_data = gdp_data[::-1]

 

 

plt.plot(gdp_data['年份'][0:10], gdp_data['增速'][0:10])

 

# 讓 X 軸的數據呈45度展示

plt.xticks(rotation=45)

 

# 給 X 軸和 Y 軸加上標籤

plt.xlabel('年份')

 

plt.ylabel('增速')

 

# 設置標題

plt.title('國內GDP增速')

 

# 展示繪圖

plt.show()

 

輸出如下:

 

 

 

 

 

 

 

 

add_subplot

 

添加子圖,方法接收三個參數,參數1表示行,參數2表示列,參數3表示第在矩陣中的第幾個元素,比如add_subplot(2, 3, 2)表示創建一個兩行三列的矩陣,子圖位於矩陣的第二個元素。元素個數是先從左往右,再從上往下依次添加的。如下圖所示:

 

 

例子:

 

gdp_data = pd.read_csv('gdp_data.csv')

 

gdp_data = gdp_data[::-1]

 

# 創建圖形對象

fig = plt.figure()

# 如果加上figsize就是指定figure的寬高,單位爲英尺

# fig = plt.figure(figsize=(3, 3))

 

ax1 = fig.add_subplot(2, 2, 1)

 

ax2 = fig.add_subplot(2, 2, 2)

 

ax3 = fig.add_subplot(2, 2, 4)

 

# 使用子圖去繪製

ax1.plot(gdp_data["年份"][0:10], gdp_data["增速"][0:10])

 

ax2.plot(gdp_data["年份"][10:20], gdp_data["增速"][10:20])

 

ax3.plot(gdp_data["年份"][20:30], gdp_data["增速"][20:30])

 

plt.show()

 

輸出如下:

 

 

 

 

 

 

在同一幅圖當中繪製兩條曲線

 

例子:

 

# 用來正常顯示中文標籤

plt.rcParams['font.sans-serif'] = ['SimHei']

# 用來正常顯示負號

plt.rcParams['axes.unicode_minus'] = False

 

gdp_data = pd.read_csv('gdp_data.csv')

 

usa_gdp_data = pd.read_csv('usa_gdp_data.csv')

 

gdp_data = gdp_data[::-1]

 

usa_gdp_data = usa_gdp_data[::-1]

 

plt.figure(figsize=(6,3))

 

plt.plot(gdp_data["年份"][0:10], gdp_data["增速"][0:10], color='red', label='中國gdp增速')

 

plt.plot(usa_gdp_data["年份"][0:10], usa_gdp_data["增速"][0:10], color='blue', label='美國gdp增速')

 

plt.xlabel("年份")

 

plt.xlabel("增速")

 

plt.title('中美1961-1970GDP增速對比')

 

plt.legend(loc= 'upper left')

 

plt.show()

 

 

 

輸出如下:

 

 

 

 

subplot、subplots和add_subplot的區別

 

 

plt.subplots()是一個函數,返回一個包含figure和axes對象的元組。因此,使用fig,ax = plt.subplots()將元組分解爲fig和ax兩個變量。

下面兩種表達方式具有同樣的效果,可以看出fig.ax = plt.subplots()較爲簡潔。

 

fig = plt.figure()

ax = fig.add_subplt(111)

 

fig,ax = plt.subplots()

 

通常,我們只用到ax.

 

fig,ax = plt.subplots(nrows=2, ncols=2)

axes = ax.flatten()

 

把父圖分成2*2個子圖,ax.flatten()把子圖展開賦值給axes,axes[0]便是第一個子圖,axes[1]是第二個... ...

如果,你想改變圖形的屬性或想把圖形保存爲.npg文件,那麼fig是非常有用的。

 

fig = plt.figure()

fig.add_subplot(121)

 

fig.savefig("name.npg")

 

fig.add_subplot(121)和fig.add_subplot(1,2,1)是可互換的。表示把父圖分成1行2列,圖形繪製在第一個子圖上。

ax = fig.add_subplot(121) ax.hist() #直方圖就繪製在了1*2中的第一個子圖上。

 

 

 

 

bar

 

繪製條形圖(柱狀圖),也可以使用plt.bar來進行繪製,若使用plt.bar繪製,設置對應的參數則是plt.xxx()

 

例子:

 

# 用來正常顯示中文標籤

plt.rcParams['font.sans-serif'] = ['SimHei']

# 用來正常顯示負號

plt.rcParams['axes.unicode_minus'] = False

 

petal_data = pd.read_csv('data.csv')

 

show_column = ["花萼長度", "花萼寬度", "花瓣長度", "花瓣寬度"]

 

# 獲取第一行數據

bar_heights = petal_data.loc[0, show_column].values

 

# 定義每個柱子的中心線到零軸的距離

bar_position = np.arange(1, 5)

 

# 相當於 fig = plt.figure 和 ax = fig.add_subplot(1, 1, 1)的簡寫

fig, ax = plt.subplots()

 

# 繪製條形圖,第一個參數是每個柱子的中心線到零軸的距離,第二個參數是每個柱子的高度,第三個參數是每個柱子的寬度

ax.bar(bar_position, bar_heights, 0.5)

# 條形圖橫向顯示,若是橫向則所有x和y的設置都要相互替換

# ax.barh(bar_heights, bar_position, 0.5)

 

# 設置 X 軸第一到第四個元素的刻度

ax.set_xticks(range(1,5))

 

# 設置 X 軸刻度的標籤和角度

ax.set_xticklabels(show_column , rotation=45)

 

# 設置 X 和 Y 軸的標籤,相當於plt.xlabel('xx')和plt.ylabel('xx')

ax.set_xlabel('植物屬性')

 

ax.set_ylabel('釐米')

 

# 設置標題,相當於plt.title('xx')

ax.set_title('植物參數對比圖')

 

plt.show()

 

 

輸出如下:

 

 

 

 

 

 

 

scatter

 

繪製散點圖,可以用plt.scatter()方法來繪製,

 

例子:

 

import matplotlib.pyplot as plt

 

# 用來正常顯示中文標籤

plt.rcParams['font.sans-serif'] = ['SimHei']

# 用來正常顯示負號

plt.rcParams['axes.unicode_minus'] = False

 

petal_data = pd.read_csv('data.csv')

 

fig, ax = plt.subplots()

 

# 參數1是橫座標數組,參數2是縱座標數組,color是顏色,marker是座標點的形狀,label是標籤

ax.scatter(petal_data["花萼長度"][0:100], petal_data["花瓣長度"][0:100], color='blue', marker='o', label='a')

 

# 還可以使用plt繪製

# plt.scatter(petal_data["花萼長度"][0:100], petal_data["花瓣長度"][0:100], color='red', marker='o', label='a')

 

ax.set_title('植物信息散點圖')

 

ax.set_xlabel('花萼長度')

 

ax.set_ylabel('花瓣長度')

 

plt.show()

 

 

輸出如下:

 

 

 

 

 

hist

 

繪製直方圖。直方圖和條形圖的區別:條形圖是繪製某一個屬性對應的值,比如中國人口數量、美國人口數量等。 而直方圖則是繪製某一個屬性區間對應的值,比如學生成績,70~80分段的人數,80~90分段的人數等。

 

例子:

 

# 用來正常顯示中文標籤

plt.rcParams['font.sans-serif'] = ['SimHei']

# 用來正常顯示負號

plt.rcParams['axes.unicode_minus'] = False

 

petal_data = pd.read_csv('data.csv')

 

fig, ax = plt.subplots()

 

# 繪製直方圖,range表示展示的區間,bins表示區間內劃分多少個區域

ax.hist(petal_data['花萼長度'], range=(5.1, 5.9), bins=9)

 

# 設置 X 和 Y 軸刻度的區間

ax.set_xlim(5, 6)

 

ax.set_ylim(0, 10)

 

ax.set_title('花萼長度統計直方圖')

 

ax.set_xlabel('花萼長度')

 

ax.set_ylabel('數量')

 

plt.show()

 

 

輸出如下:

 

 

 

boxplot

 

繪製和盒形圖

 

 

例子:

 

# 用來正常顯示中文標籤

plt.rcParams['font.sans-serif'] = ['SimHei']

# 用來正常顯示負號

plt.rcParams['axes.unicode_minus'] = False

 

petal_data = pd.read_csv('data.csv')

 

# 要繪製的列

columns = ['花萼長度','花瓣長度']

 

fig, ax = plt.subplots()

 

# 繪製盒形圖

ax.boxplot(petal_data[columns].values)

 

# 設置 X 軸刻度

ax.set_xticklabels(columns)

 

ax.set_ylabel('長度/cm')

 

plt.show()

 

輸出如下(紅色部分是自己標註上去說明的):

 

 

 

 

 

 

 

 

gdp_data.csv:

 

年份,增速

2018,6.6%

2017,6.76%

2016,6.74%

2015,6.91%

2014,7.3%

2013,7.77%

2012,7.86%

2011,9.55%

2010,10.64%

2009,9.4%

2008,9.65%

2007,14.23%

2006,12.72%

2005,11.4%

2004,10.11%

2003,10.04%

2002,9.13%

2001,8.34%

2000,8.49%

1999,7.67%

1998,7.84%

1997,9.23%

1996,9.93%

1995,10.95%

1994,13.05%

1993,13.87%

1992,14.22%

1991,9.29%

1990,3.91%

1989,4.19%

1988,11.23%

1987,11.69%

1986,8.94%

1985,13.44%

1984,15.14%

1983,10.84%

1982,8.93%

1981,5.17%

1980,7.81%

1979,7.6%

1978,11.13%

1977,7.57%

1976,-1.57%

1975,8.72%

1974,2.31%

1973,7.76%

1972,3.81%

1971,7.06%

1970,19.3%

1969,16.94%

1968,-4.1%

1967,-5.77%

1966,10.65%

1965,16.95%

1964,18.18%

1963,10.3%

1962,-5.58%

1961,-27.27%

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章