欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python利用matplotlib繪制折線圖的新手教程

 更新時間:2020年11月05日 10:03:23   作者:Python碎片  
這篇文章主要給大家介紹了關(guān)于Python利用matplotlib繪制折線圖的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

matplotlib是Python中的一個第三方庫。主要用于開發(fā)2D圖表,以漸進式、交互式的方式實現(xiàn)數(shù)據(jù)可視化,可以更直觀的呈現(xiàn)數(shù)據(jù),使數(shù)據(jù)更具說服力。

一、安裝matplotlib

pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple

二、matplotlib圖像簡介

matplotlib的圖像分為三層,容器層、輔助顯示層和圖像層。

1. 容器層主要由Canvas、Figure、Axes組成。

Canvas位于圖像的最底層,充當(dāng)畫布的作用。

Figure位于Canvas之上,指畫布上的一整張圖像。

Axes位于Figure之上,指Figure中的單個圖表,一個Figure中可以有一個或多個Axes,即一張圖像中可以有一個或多個圖表。

2. 輔助顯示層是單個圖表(Axes)中用來提供輔助信息的層。

輔助顯示層主要包括Axes外觀(facecolor)、邊框線(spines)、坐標(biāo)軸(axis)、坐標(biāo)軸名稱(axis label)、坐標(biāo)軸刻度(tick)、坐標(biāo)軸刻度標(biāo)簽(tick label)、網(wǎng)格線(grid)、圖例(legend)、標(biāo)題(title)等內(nèi)容。

輔助層可使圖像顯示更加直觀,提高可讀性。

3. 圖像層指Axes內(nèi)通過plot、scatter、bar、histogram、pie等函數(shù)繪制出的圖形。

三、matplotlib繪制折線圖

# coding=utf-8
import matplotlib.pyplot as plt
 
 
plt.figure(figsize=(20, 10), dpi=100)
game = ['1-G1', '1-G2', '1-G3', '1-G4', '1-G5', '2-G1', '2-G2', '2-G3', '2-G4', '2-G5', '3-G1', '3-G2', '3-G3',
  '3-G4', '3-G5', '總決賽-G1', '總決賽-G2', '總決賽-G3', '總決賽-G4', '總決賽-G5', '總決賽-G6']
scores = [23, 10, 38, 30, 36, 20, 28, 36, 16, 29, 15, 26, 30, 26, 38, 34, 33, 25, 28, 40, 28]
plt.plot(game, scores)
plt.show()

運行結(jié)果:

figure(): 創(chuàng)建圖像并設(shè)置圖像的大小等屬性,返回一張圖像,可以傳入很多參數(shù),常用參數(shù)有兩個。figsize參數(shù)傳入一個元組(width, height),設(shè)置圖像的大小。dpi傳入一個整數(shù)值,設(shè)置圖像的清晰度。

plot(): matplotlib中繪制折線圖的函數(shù)??梢詡魅牒芏鄥?shù),一般傳入兩個列表,分別是折線圖中的x值和y值。上面的例子中用了NBA2020年季后賽James的得分?jǐn)?shù)據(jù)。

show(): 展示圖像。

在上面的圖表中,x坐標(biāo)值中有中文,首次使用matplotlib繪圖時中文無法正常顯示。要解決中文顯示問題,需要下載安裝SimHei字體,下載鏈接:https://www.zitijia.com/i/281258939050380345.html,或直接搜索SimHei然后找一個正確的網(wǎng)站下載。下載完成后,在Windows下直接解壓雙擊安裝。安裝完成后刪除~/.matplotlib中的緩存文件,并創(chuàng)建配置文件matplotlibrc,將matplotlibrc中的內(nèi)容設(shè)置為如下內(nèi)容。

font.family   : sans-serif
font.sans-serif  : SimHei
axes.unicode_minus : False

操作命令如下截圖,完成后圖像中就可以正常顯示中文了。

使用上面的代碼,已經(jīng)實現(xiàn)了簡單的折線圖,但展示的效果很差,所以需要進行優(yōu)化,使圖像展示得更好。

四、matplotlib優(yōu)化折線圖

import matplotlib.pyplot as plt
 
 
plt.figure(figsize=(20, 10), dpi=100)
game = ['1-G1', '1-G2', '1-G3', '1-G4', '1-G5', '2-G1', '2-G2', '2-G3', '2-G4', '2-G5', '3-G1', '3-G2', '3-G3',
  '3-G4', '3-G5', '總決賽-G1', '總決賽-G2', '總決賽-G3', '總決賽-G4', '總決賽-G5', '總決賽-G6']
scores = [23, 10, 38, 30, 36, 20, 28, 36, 16, 29, 15, 26, 30, 26, 38, 34, 33, 25, 28, 40, 28]
plt.plot(game, scores, c='red')
plt.scatter(game, scores, c='red')
y_ticks = range(50)
plt.yticks(y_ticks[::5])
plt.grid(True, linestyle='--', alpha=0.5)
plt.xlabel("賽程", fontdict={'size': 16})
plt.ylabel("得分", fontdict={'size': 16})
plt.title("NBA2020季后賽詹姆斯得分", fontdict={'size': 20})
plt.show()

運行結(jié)果:

在使用plot()函數(shù)繪圖時,可以通過c='顏色'來設(shè)置折線圖的顏色。

scatter(): 繪制散點圖。折線圖是用直線連接相鄰的兩個點形成的,但是連成折線后點的顯示不明顯。scatter可以單獨對點進行設(shè)置,展示得更明顯。

yticks(): 用于設(shè)置y軸坐標(biāo)的范圍,傳入一個可迭代對象(如range()函數(shù))。最開始繪制的折線圖中,圖像的y軸坐標(biāo)范圍是數(shù)據(jù)的范圍,坐標(biāo)原點不是0,使用yticks函數(shù)可以設(shè)置想要的坐標(biāo)范圍。同理xticks可以用于設(shè)置x軸坐標(biāo)的范圍。

grid(): 用于設(shè)置圖表中的網(wǎng)格線,使用linestyle參數(shù)設(shè)置網(wǎng)格線的樣式,常用的樣式有下表中的幾種,plot()函數(shù)中也可以用linestyle參數(shù)設(shè)置折線圖的樣式。使用alpha參數(shù)設(shè)置網(wǎng)格線的透明度。

樣式字符實線- 虛線- - 點劃線-.點虛線: 

xlabel(): 用于設(shè)置x軸的標(biāo)簽,說明x軸坐標(biāo)的含義,第一個參數(shù)傳入需要設(shè)置的標(biāo)簽值,后面可以通過其他參數(shù)設(shè)置顯示的效果,如字體大小等。ylabel同理。

title(): 用于設(shè)置折線圖的標(biāo)題,說明這張折線圖展示的數(shù)據(jù)。用法同xlabel。

五、matplotlib繪制多條折線圖

import matplotlib.pyplot as plt
 
 
plt.figure(figsize=(20, 10), dpi=100)
game = ['1-G1', '1-G2', '1-G3', '1-G4', '1-G5', '2-G1', '2-G2', '2-G3', '2-G4', '2-G5', '3-G1', '3-G2', '3-G3',
  '3-G4', '3-G5', '總決賽-G1', '總決賽-G2', '總決賽-G3', '總決賽-G4', '總決賽-G5', '總決賽-G6']
scores = [23, 10, 38, 30, 36, 20, 28, 36, 16, 29, 15, 26, 30, 26, 38, 34, 33, 25, 28, 40, 28]
rebounds = [17, 6, 12, 6, 10, 8, 11, 7, 15, 11, 6, 11, 10, 9, 16, 13, 9, 10, 12, 13, 14]
assists = [16, 7, 8, 10, 10, 7, 9, 5, 9, 7, 12, 4, 11, 8, 10, 9, 9, 8, 8, 7, 10]
plt.plot(game, scores, c='red', label="得分")
plt.plot(game, rebounds, c='green', linestyle='--', label="籃板")
plt.plot(game, assists, c='blue', linestyle='-.', label="助攻")
plt.scatter(game, scores, c='red')
plt.scatter(game, rebounds, c='green')
plt.scatter(game, assists, c='blue')
plt.legend(loc='best')
plt.yticks(range(0, 50, 5))
plt.grid(True, linestyle='--', alpha=0.5)
plt.xlabel("賽程", fontdict={'size': 16})
plt.ylabel("數(shù)據(jù)", fontdict={'size': 16})
plt.title("NBA2020季后賽詹姆斯數(shù)據(jù)", fontdict={'size': 20})
plt.show()

運行結(jié)果:

要在同一張圖像中展示多條折線圖,多次調(diào)用plot()函數(shù)就行。每條折線圖的顏色、樣式等可以分別設(shè)置,以便更好地進行區(qū)分。

legend(): 展示圖例,通過loc參數(shù)傳入圖例在圖表中展示的位置,可以傳入的值有‘best', 'upper right', 'upper left', 'lower left', 'lower right', 'right', 'center left', 'center right', 'lower center', 'upper center', 'center',這十一個值分別對應(yīng)數(shù)字0~10,傳值時也可以傳對應(yīng)的數(shù)字,后面十個值都指定了圖例的位置,'best'表示自適應(yīng),會自動根據(jù)圖像的分布在后面的十個值中選擇一個,大部分為右上角'upper right'。

為了使用圖例,在每次調(diào)用plot()函數(shù)繪制折線圖時,需要使用label參數(shù)給折線圖添加標(biāo)簽,在圖例中展示。有多條折線圖時,圖例可以用于區(qū)分每條折線圖表示的含義,如將James的得分和籃板、助攻展示在同一張圖中。

六、matplotlib繪制多張折線圖

import matplotlib.pyplot as plt
 
 
fig, axs = plt.subplots(nrows=1, ncols=3, figsize=(20, 6), dpi=100)
game = ['1-G1', '1-G2', '1-G3', '1-G4', '1-G5', '2-G1', '2-G2', '2-G3', '2-G4', '2-G5', '3-G1', '3-G2', '3-G3',
  '3-G4', '3-G5', '總決賽-G1', '總決賽-G2', '總決賽-G3', '總決賽-G4', '總決賽-G5', '總決賽-G6']
scores = [23, 10, 38, 30, 36, 20, 28, 36, 16, 29, 15, 26, 30, 26, 38, 34, 33, 25, 28, 40, 28]
rebounds = [17, 6, 12, 6, 10, 8, 11, 7, 15, 11, 6, 11, 10, 9, 16, 13, 9, 10, 12, 13, 14]
assists = [16, 7, 8, 10, 10, 7, 9, 5, 9, 7, 12, 4, 11, 8, 10, 9, 9, 8, 8, 7, 10]
y_data = [scores, rebounds, assists]
colors = ['red', 'green', 'blue']
line_style = ['-', '--', '-.']
y_labels = ["得分", "籃板", "助攻"]
for i in range(3):
 axs[i].plot(game, y_data[i], c=colors[i], label=y_labels[i], linestyle=line_style[i])
 axs[i].scatter(game, y_data[i], c=colors[i])
 axs[i].legend(loc='best')
 axs[i].set_yticks(range(0, 50, 5))
 axs[i].grid(True, linestyle='--', alpha=0.5)
 axs[i].set_xlabel("賽程", fontdict={'size': 16})
 axs[i].set_ylabel(y_labels[i], fontdict={'size': 16}, rotation=0)
 axs[i].set_title("NBA2020季后賽詹姆斯{}".format(y_labels[i]), fontdict={'size': 20})
fig.autofmt_xdate()
plt.show()

運行結(jié)果:

subplots(): 用于在同一張圖像中繪制多張圖表,通過nrows, ncols兩個參數(shù)設(shè)置圖表的張數(shù)和排列方式,figsize和dpi同figure()函數(shù)。subplots()函數(shù)返回兩個參數(shù),一個是圖像對象fig,一個是可迭代的圖表數(shù)組axs(類型為numpy中的數(shù)組對象)。

每一張圖表中的標(biāo)簽、標(biāo)題、樣式、圖例等都需要單獨設(shè)置,為了避免代碼過于冗余,可以使用循環(huán)。繪制每一張圖表時,從axs中取出每一張圖表,再調(diào)用plot()函數(shù)繪圖。在設(shè)置坐標(biāo)軸、標(biāo)簽、標(biāo)題時,使用'set_'開頭的方法進行設(shè)置,如設(shè)置x軸標(biāo)簽用set_xlabel()。

autofmt_xdate(): x軸坐標(biāo)值自適應(yīng)傾斜。因為一張圖像中有多張圖表,x坐標(biāo)值靠得很近,可能會因重疊造成展示效果差,使用fig對象的autofmt_xdate()方法可以設(shè)置自適應(yīng)傾斜。

以上就是matplotlib實現(xiàn)折線圖的簡單介紹,更多設(shè)置可以參考官網(wǎng)https://matplotlib.org/tutorials/index.html,并多作嘗試。

總結(jié)

到此這篇關(guān)于Python利用matplotlib繪制折線圖的文章就介紹到這了,更多相關(guān)Python matplotlib繪制折線圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python全面解析json數(shù)據(jù)并保存為csv文件

    Python全面解析json數(shù)據(jù)并保存為csv文件

    這篇文章主要介紹了Python全面解析json數(shù)據(jù)并保存為csv文件,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • python 批量修改 labelImg 生成的xml文件的方法

    python 批量修改 labelImg 生成的xml文件的方法

    這篇文章主要介紹了python 批量修改 labelImg 生成的xml文件的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • python numpy數(shù)組的索引和切片的操作方法

    python numpy數(shù)組的索引和切片的操作方法

    NumPy 是一個 Python 包。 它代表 “Numeric Python”。它是一個由多維數(shù)組對象和用于處理數(shù)組的例程集合組成的庫。這篇文章主要介紹了python numpy 數(shù)組的索引和切片,需要的朋友可以參考下
    2018-10-10
  • Python中的random.uniform()函數(shù)教程與實例解析

    Python中的random.uniform()函數(shù)教程與實例解析

    今天小編就為大家分享一篇關(guān)于Python中的random.uniform()函數(shù)教程與實例解析,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • Python分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)示例代碼

    Python分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)示例代碼

    在Python中,分支結(jié)構(gòu)通過if、elif和else關(guān)鍵字來實現(xiàn)條件判斷,在使用if語句時,程序會根據(jù)條件表達(dá)式的真假執(zhí)行相應(yīng)的代碼塊,這篇文章主要介紹了Python分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu),需要的朋友可以參考下
    2024-03-03
  • 詳解Python如何利用pymysql封裝項目通用的連接和查詢

    詳解Python如何利用pymysql封裝項目通用的連接和查詢

    一個項目通常都需要有數(shù)據(jù)庫,本文就來為大家詳細(xì)講講Python如何利用pymysql簡單分裝一個通用的連接,關(guān)閉和查詢,需要的可以參考一下
    2022-07-07
  • Django中celery的使用項目實例

    Django中celery的使用項目實例

    Celery是?個 基于python開發(fā)的分布式異步消息任務(wù)隊列,通過它可以輕松的實現(xiàn)任務(wù)的異步處理,下面這篇文章主要給大家介紹了關(guān)于Django中celery使用的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • python中自定義with的具體使用

    python中自定義with的具體使用

    在 Python 中,with?語句用于簡化資源管理,它保證在執(zhí)行完代碼塊后正確地釋放資源,通過__enter__和__exit__魔術(shù)方法實現(xiàn),本文就來詳細(xì)的介紹一下,感興趣的可以了解一下
    2024-09-09
  • python小例子-縮進式編碼+算術(shù)運算符+定義與賦值

    python小例子-縮進式編碼+算術(shù)運算符+定義與賦值

    這篇文章主要給大家分享一些python學(xué)習(xí)小例子,內(nèi)容包括縮進式編碼風(fēng)格、算術(shù)運算符、定義與賦值,需要的小伙伴可以參考一下
    2022-04-04
  • Python struct.unpack

    Python struct.unpack

    Python中按一定的格式取出某字符串中的子字符串,使用struck.unpack是非常高效的。
    2008-09-09

最新評論