日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Matplotlib入门

發布時間:2024/9/18 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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.3

1. 畫折線圖

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度,

import matplotlib.pyplot as plt import pandas as pdunrate = pd.read_csv('UNRATE.csv') twelve = unrate[0:12] plt.plot(twelve['DATE'], twelve['VALUE']) plt.xticks(rotation=45) plt.show()

顯示結果如下:

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行一列,順序是從上到下,從左到右進行排序。
fig = plt.figure() # 首先指定默認畫圖的區間 ax1 = fig.add_subplot(4, 3, 1) # 添加子圖ax1, 在當前區間,是第1個圖 ax2 = fig.add_subplot(4, 3, 2) # 添加子圖ax2,在當前區間,是第2個圖 ax3 = fig.add_subplot(4, 3, 6) # 添加子圖ax3,在當前區間,是第6個圖 plt.show()

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軸數據進行顯示,可以進行歸類,如下圖:

fig, ax = plt.subplots() ax.hist(norm_reviews['Fandango_Ratingvalue']) plt.show()

輸出結果如下:

默認情況下,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軸的區間范圍:

ax2.hist(norm_reviews['RT_user_norm'], 20, range=(0,5)) # 可以省略bins ax2.set_title('Distribution of Rotten Tomatoes Ratings') ax2.set_ylim(0, 50) # 指定y軸的區間

輸出結果如下:

指定橫軸區間

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()

結果如下:

可以看出來中文顯示亂碼了。

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()

可以添加參數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.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()


設置線條類型:

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 # 正常顯示負號 mpl.rcParams['lines.linewidth'] = 5 # 設置線條寬度 mpl.rcParams['lines.color'] = 'red' # 設置線條顏色 mpl.rcParams['lines.linestyle'] = '--' # 設置線條樣式 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入门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。