tft每日頭條

 > 生活

 > matplotlib 畫折線圖代碼

matplotlib 畫折線圖代碼

生活 更新时间:2024-09-30 18:16:23

前面幾節我們學習了python中numpy和pandas庫的一些常用操作,接下來幾個章節,我們學習一個非常重要的數據可視化庫matplotlib(seaborn庫也有有所涉及)。這裡我們需要知道,matplotlib庫主要繪制一些2D圖形和簡單的3D圖形。

那麼,我們先來看下學習的主要内容:

  • 繪制折線圖
  • 繪制子圖
  • 繪制柱狀圖
  • 繪制散點圖
  • 繪制直方圖
  • 繪制箱型圖(箱線圖)

而本節我們主要實現折線圖、子圖和柱狀圖的繪制,下節内容主要是散點圖、直方圖、箱線圖及一些細節補充。

繪制折線圖

先看一下我們的需求,這裡有一組數據是某個城市2018年的房價數據,現在我們想看下這一年的趨勢,那麼就需要繪制出一折線圖。

#導入pandas包 import pandas as pd #導入pyplot包 import matplotlib.pyplot as plt unrate = pd.read_excel('price.xlsx') unrate['date'] = pd.to_datetime(unrate['date']) plt.plot(unrate['date'], unrate['price']) plt.show()

matplotlib 畫折線圖代碼(matplotlib庫繪制折線圖子圖及條形圖)1

優化前房價折線圖

上面這個折線圖比較粗糙,既沒有橫坐标名稱,也沒有縱坐标名稱,那能否優化呢?答案當然可以,但在優化之我們詳細對這個畫圖的常用參數做一些說明。

plt.plot(x,y,format_string,**kwargs)

  • x:x軸數據,列表或數組,可選
  • y:y軸數據,列表或數組
  • format_string:控制曲線的格式字符串,由顔色字符、風格字符和标記字符組成。
  • **kwargs:第二組或更多,(x,y,format_string)
  • plt.xlim、plt.ylim 設置橫縱坐标軸範圍
  • plt.xlabel、plt.ylabel 設置橫縱坐标軸名稱
  • plt.xticks、plt.yticks設置坐标軸刻度

了解這些參數的意義後,我們将上面的圖進一步改進,效果如下:

import matplotlib.pyplot as plt plt.plot(unrate['date'], unrate['price'],c='red') #設置縱坐标範圍 plt.ylim((8000,10000)) #設置橫坐标角度,這裡設置為45度 plt.xticks(rotation=45) #設置橫縱坐标名稱 plt.xlabel("month") plt.ylabel("price") #設置折線圖名稱 plt.title("the price of 2018") plt.show()

matplotlib 畫折線圖代碼(matplotlib庫繪制折線圖子圖及條形圖)2

優化後房價走勢圖

繪制子圖

當你在寫下fig=plt.figure()時候,python已經給你創建了一張大的畫布,既然這是一張畫布,那麼我們就可以在這張畫布上進行分塊,在不同的塊上做出不同的圖形。這個函數就叫fig.add_subplot(),其中傳入3個參數,分别代表行、列和位置,比如fig.add_subplot(2,1,3)表示在畫布的第三個位置添加一個2行1列的子圖。這裡需要注意區分多個子圖和多圖的區别,子圖是在一個fig對象上創建多個區塊,而多圖是創建多個figure對象。

import matplotlib.pyplot as plt fig = plt.figure() ax1 = fig.add_subplot(3,2,1) ax2 = fig.add_subplot(3,2,2) ax2 = fig.add_subplot(3,2,6) plt.show()

matplotlib 畫折線圖代碼(matplotlib庫繪制折線圖子圖及條形圖)3

添加子圖

fig = plt.figure(figsize=(10,6)) colors = ['red', 'blue', 'green', 'orange', 'black'] for i in range(5): start_index = i*12 end_index = (i 1)*12 subset = unrate[start_index:end_index] label = str(1948 i) plt.plot(subset['MONTH'], subset['VALUE'], c=colors[i], label=label) #添加圖例,loc='upper left表示圖例位置在最左側,一般也可以直接使用loc='best' plt.legend(loc='upper left') plt.xlabel('Month, Integer') plt.ylabel('Unemployment Rate, Percent') plt.title('Monthly Unemployment Trends, 1948-1952') plt.show()

matplotlib 畫折線圖代碼(matplotlib庫繪制折線圖子圖及條形圖)4

添加圖例及重複畫圖

繪制柱狀圖

繪制柱狀圖,我們主要用到bar()函數。我們先看下bar()的構造函數:bar(x,height, width,*,align='center',**kwargs)

x:包含所有柱子的下标的列表

height:包含所有柱子的高度值的列表

width:每個柱子的寬度。可以指定一個固定值,那麼所有的柱子都是一樣的寬。或者設置一個列表,這樣可以分别對每個柱子設定不同的寬度。

align:柱子對齊方式,有兩個可選值:center和edge。center表示每根柱子是根據下标來對齊, edge則表示每根柱子全部以下标為起點,然後顯示到下标的右邊。如果不指定該參數,默認值是center。

除了以上幾個重要的參數,還有幾個樣式參數:color,設置顔色;edgecolor設置邊框顔色;linewidth設置柱子的邊框寬度;tick_label,柱子上顯示的标簽。

下面我們用代碼實現柱狀圖:

import pandas as pd import matplotlib.pyplot as plt from numpy import arange reviews = pd.read_csv('fandango_scores.csv') cols = ['FILM', 'RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue', 'Fandango_Stars'] norm_reviews = reviews[cols] #print(norm_reviews[:1]) num_cols = ['RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue', 'Fandango_Stars'] bar_heights = norm_reviews.ix[0, num_cols].values print(bar_heights) bar_positions = arange(5) 0.75 #print bar_positions fig, ax = plt.subplots() ax.bar(bar_positions, bar_heights, 0.3) plt.show()

matplotlib 畫折線圖代碼(matplotlib庫繪制折線圖子圖及條形圖)5

柱狀圖

今天内容到此為止,下節我們繼續講散點圖、直方圖、箱型圖和其他細節補充,喜歡的小夥伴請點擊關注、收藏。(點擊外鍊獲取練習數據)

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved