天天看點

Python 之使用 matplotlib 畫條形圖、折線圖、餅圖以及散點圖

以下展示一些用 matplotlib 畫條形圖、折線圖、餅圖以及散點圖的示例,其中類似于圖例、坐标軸名稱,标題等的顯示方法是一樣的,不另做介紹。

0、引入子產品

import random
import matplotlib.pyplot as plt
import matplotlib
#引入顯示中文的黑體,如果中文顯示亂碼,解決方法參見我的上一篇博文
matplotlib.rcParams['font.family'] = "SimHei" 
matplotlib.rcParams["font.size"] = 10         #字号
matplotlib.rcParams['font.style'] = 'italic'   #字型樣式  斜着
           

1、畫條形圖

def plot_histogram():
    x = list(range(7))
    y = random.sample(range(1,10), 7)
    plt.bar(x, y)
    plt.xlabel('x軸')
    plt.ylabel('y軸')
    plt.title('條形圖')
    plt.show()
           

如上述代碼所示,x 和 y 分别是生成的資料,

plt.bar() 則是畫條形圖的文法,

plt.xlabel() 和 plt.ylabel() 表示x軸和y軸下的标題,

plt.title() 則是整幅圖的标題,

對于圖檔,我們可以使用 plt.shhow() 用來即時展示圖檔,也可以使用 plt.savefig(path) 來存儲圖檔。

以下是運作上面這個函數的結果:

Python 之使用 matplotlib 畫條形圖、折線圖、餅圖以及散點圖

2、畫折線圖

上面說過,matplotlib 的畫圖除了文法,其他類似于圖例,标簽,标題的用法和其他函數都一樣,以下是折線圖的一個示例:

def plot_line():
    x = list(range(7))
    y = random.sample(range(1,10), 7)
    plt.plot(x, y, label='y',marker='.', color='blue')
    plt.xlabel('x軸')
    plt.ylabel('y軸')
    plt.title('折線圖')
    plt.legend()	#圖例,用來表示圖中線的資訊
    plt.show()
           

如上述代碼,折線圖的文法是 plt.plot(),後面的參數資訊詳解如下:

label 表示的是标簽,用于圖例中顯示,

marker 表示的是折線的每個點的标記類型,示例中是 點,還可以是 * 表示 * 号、- 表示實線、-- 表示破折号等。

color 表示的是線條的顔色,可以是英文,也可以 RGB 代碼這種像素來表示顔色,如 color=’#7834ff’。

plt.legend() 表示的是圖例,在 matplotlib 中圖例的位置是變化的,一般哪裡有空位就跑到哪裡去了,如果想要固定住,就需要額外用代碼來調節。

以下是示例結果:

Python 之使用 matplotlib 畫條形圖、折線圖、餅圖以及散點圖

如果是要在一幅圖裡畫多條折線,直接把 plt.plot() 這個函數再用一邊即可:

def plot_line():
    x = list(range(7))
    y1 = random.sample(range(1,10), 7)
    y2 = random.sample(range(1,10), 7)
    plt.plot(x, y1, label='y1', marker='.', color='blue')
    plt.plot(x, y2, label='y2', marker='*', color='green')
    plt.xlabel('x軸')
    plt.ylabel('y軸')
    plt.title('折線圖')
    plt.legend()
    plt.show()
           

以下是結果:

Python 之使用 matplotlib 畫條形圖、折線圖、餅圖以及散點圖

3、畫餅圖

餅圖的文法是 plt.pie(),如下是示例:

def plot_pie():
	#這是每個部分的名稱
    name_list = ['part1','part2','part3','part4']
    #這是每個部分對應的資料,與上述名稱清單對應
    num_list = [56,33,78,95]
    #explode 是用于着重的表示,某個值不為0表示對應某個部分離開圓心的距離
    explode = (0,0,0.1,0)
    #每個部分所用的顔色
    colors = ['orange', 'yellow', 'lime', 'red']
	
	#如果畫出來的圓是扁的,可以用以下三行代碼把圓變成一個正圓
    plt.xlim(0.8)
    plt.ylim(0.8)
    plt.axes(aspect='equal')

    plt.pie(num_list, labels=name_list, explode=explode, colors=colors)
    plt.title('餅圖', fontsize=18)
    plt.legend()
    plt.show()
           

plt.pie() 的用法詳情都在代碼示例中說明了,如下是示例運作結果:

Python 之使用 matplotlib 畫條形圖、折線圖、餅圖以及散點圖

4、畫散點圖

散點圖的方法是 plt.scatter(),如下是使用示例:

def plot_scatter():
    x = list(range(7))
    y = random.sample(range(1,10), 7)
    plt.scatter(x, y)
    plt.title('散點圖', fontsize=18)
    plt.show()
           

使用方法就很簡答,如下是運作結果:

Python 之使用 matplotlib 畫條形圖、折線圖、餅圖以及散點圖

好了,以上就是這幾種圖的文法,接下來如果有時間的話,還會涉及以下方面知識點:網格的繪制、坐标名稱過長換行的處理、x 軸和 y 軸的變化範圍的确定等。