Matplotlib入门
生活随笔
收集整理的這篇文章主要介紹了
Matplotlib入门
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原始數據樣本
DATE,VALUE 1948-01-01,3.4 1948-02-01,3.8 1948-03-01,4.0 1948-04-01,3.9 1948-05-01,3.5 1948-06-01,3.6 1948-07-01,3.6 1948-08-01,3.9 1948-09-01,3.8 1948-10-01,3.7 1948-11-01,3.8 1948-12-01,4.0 1949-01-01,4.3 1949-02-01,4.7 1949-03-01,5.0 1949-04-01,5.31. 畫折線圖
import matplotlib.pyplot as plt import pandas as pdunrate = pd.read_csv('UNRATE.csv') twelve = unrate[0:12] # 獲取前12條數據 plt.plot(twelve['DATE'], twelve['VALUE']) # 橫坐標是時間,縱坐標是值 plt.show()結果如下圖:
可以看出來,橫坐標的值已經擠壓在一起了,
使用plt.xticks(rotation=45)將橫坐標進行旋轉45度,
顯示結果如下:
1.1 增加XY的label,以及title
plt.xlabel('Month') plt.ylabel('Unemployment Rate') plt.plot(twelve['DATE'], twelve['VALUE']) plt.xticks(rotation=45) plt.show()結果如下圖
2子圖
2.1添加子圖
在寫論文時,有很多指標,這些指標沒有辦法畫在一張圖中,因此需要畫很多子圖來表示。
- fig.add_subplot(4, 1, x):4和1表示4行一列,順序是從上到下,從左到右進行排序。
2.2 修改圖片大小
fig = plt.figure(figsize=(5,3)) # 5表示圖片的長,3表示圖片的寬 ax1 = fig.add_subplot(2,1,1) # 添加子圖1 ax2 = fig.add_subplot(2,1,2) # 添加子圖2 ax1.plot(twelve['DATE'], twelve['VALUE']) # 給子圖1添加數據 ax2.plot(twelve['DATE'], twelve['VALUE']) # 給子圖2添加數據 plt.xticks(rotation=45) plt.show()2.3 在同一個圖中,畫兩條折線
fig = plt.figure(figsize=(6,3))plt.plot(unrate[0:12]['DATE'], unrate[0:12]['VALUE'], c='red', label='0-12') #添加一條紅色的線 plt.plot(unrate[0:12]['DATE'], unrate[12:24]['VALUE'], c='blue', label='12-24') # 添加一條藍色的線 plt.legend(loc='best') # 添加圖例,best表示自動決定放到最合適的位置 plt.xticks(rotation=45) plt.show()結果如下:
3 柱狀圖
import numpy reviews = pd.read_csv('fandango_scores.csv') num_cols = ['RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue','Fandango_Stars'] #print(norm_reviews) bar_heights = reviews.loc[0, num_cols].values # 每一個柱狀的高度, loc表示定位第幾行 print(bar_heights) bar_positions = numpy.arange(5) + 0.75 # 每一個柱狀的位置。就是離原點的位置 print(bar_positions) fig,ax = plt.subplots() # 創建一個figure 和一組subplots ax.bar(bar_positions, bar_heights, 0.3) #0.3表示柱狀條形圖寬度 ax.set_xticks(range(1, 6)) ax.set_xticklabels(num_cols, rotation=45)ax.set_xlabel('Rating Source') ax.set_ylabel('Average Rating') ax.set_title('Average User Rating For Avengers: Age of Ultro(2015)')plt.show()輸出結果:
3.1 橫向柱狀圖
import numpy reviews = pd.read_csv('fandango_scores.csv') num_cols = ['RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue','Fandango_Stars'] #print(norm_reviews) bar_heights = reviews.loc[0, num_cols].values # 每一個柱狀的高度 print(bar_heights) bar_positions = numpy.arange(5) + 0.75 # 每一個柱狀的位置。就是離原點的位置 print(bar_positions) fig,ax = plt.subplots() # 創建一個figure 和一組subplots ax.barh(bar_positions, bar_heights, 0.3) #0.3表示柱狀條形圖寬度, barh表示橫向畫圖 ax.set_yticks(range(1, 6)) ax.set_yticklabels(num_cols, rotation=45)ax.set_xlabel('Average Rating') ax.set_ylabel('Rating Source') ax.set_title('Average User Rating For Avengers: Age of Ultro(2015)')plt.show()輸出結果:
3.2 按照x軸數據歸類來畫柱狀圖
當x軸上的數據非常多的時候,不方便將每個x軸數據進行顯示,可以進行歸類,如下圖:
輸出結果如下:
默認情況下,hist按照10個進行統計。可以指定個數:
ax.hist(norm_reviews['Fandango_Ratingvalue'], bins=20)
這樣會自動劃分20個區間,那么輸出結果如下:
同時,還可以指定具體某一個區間,比如只顯示區間(4,5)之間的數據,ax.hist(norm_reviews['Fandango_Ratingvalue'], range=(4,5),bins=20)如下圖所示:
同時可以指定y軸和x軸的區間范圍:
輸出結果如下:
指定橫軸區間
import matplotlib.pyplot as plt height = [168,155,182,170,173,161,155,173,176,181,166,172,170] bins = range(150, 191, 5) # 指定橫軸區間 plt.hist(height, bins=bins) plt.show()條形圖
條形圖是用寬度相同的條形的高度或長短來表示數據多少的圖形。
import matplotlib.pyplot as plt classes = ['class1', 'class2', 'class3'] scores = [70,80,60] plt.bar(classes,scores) plt.show()4 散點圖
fig,ax = plt.subplots() ax.scatter(norm_reviews['Fandango_Ratingvalue'], norm_reviews['RT_user_norm']) ax.set_xlabel('Fandango') ax.set_ylabel('Rotten Tomatoes') plt.show()輸出結果:
5 盒圖
fig, ax = plt.subplots() num_cols = ['RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue'] ax.boxplot(norm_reviews[num_cols]) ax.set_xticklabels(num_cols, rotation=90) ax.set_ylim(0,5)plt.show()輸出結果如下:
6 餅圖
mpl.rcParams['font.sans-serif'] = ['SimHei'] # 中文顯示labels = ['房貸', '飲食', '出行', '教育'] data = [8000, 2000, 2000, 3000] plt.pie(data, labels=labels, autopct='%1.1f%%') # autopct表示顯示百分比中文設置
默認情況下中文設置會顯示亂碼,如下代碼所示:
import matplotlib.pyplot as plt x=[1,2] y=[3,4] plt.title('中文標題') plt.bar(x,y) plt.show()結果如下:
可以看出來中文顯示亂碼了。
可以添加參數rcParams
負號亂碼
當我們的數值中包含負號時,默認也會出現亂碼現象:
import matplotlib.pyplot as plt import matplotlib as mpl x=[1,2] y=[-3,4] mpl.rcParams['font.sans-serif'] = ['SimHei'] plt.title('中文標題') plt.bar(x,y) plt.show()
同樣可以通過設置參數進行修改:
修改線條樣式
折線圖:
import matplotlib.pyplot as plt import matplotlib as mpl x=[1,2] y=[-3,4] mpl.rcParams['font.sans-serif'] = ['SimHei'] mpl.rcParams['axes.unicode_minus'] = False plt.title('中文標題') plt.plot(x,y) plt.show()
設置線條類型:
設置title xlable ylabel xticks
x = [1,2,3] name = ['A班', 'B班', 'C班'] y = [80, 85, 75] plt.bar(x, y) plt.title("三班成績柱狀圖") plt.xlabel('班級') plt.ylabel('成績') plt.xticks(x, name) # 將1對應為A班,2對應為B班,3對應為C班 plt.text(1, 81,80) # 在(1,81)位置上添加文字80 plt.text(2, 86, 85) # 在(2,86)位置上添加文字85總結
以上是生活随笔為你收集整理的Matplotlib入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 全切双眼皮多久能恢复正常饮食
- 下一篇: Jupyter Noteboot 添加k