最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python+matplotlib繪制常見圖表的入門教程

 更新時(shí)間:2026年05月18日 09:21:17   作者:yuanpan  
對(duì)于剛開始學(xué)習(xí) Python 數(shù)據(jù)分析的同學(xué)來說,數(shù)據(jù)可視化是非常重要的一步,很多時(shí)候,表格中的數(shù)字并不直觀,但只要畫成圖表,就能快速看出趨勢(shì)、對(duì)比關(guān)系和占比結(jié)構(gòu),本文將以 matplotlib 為核心,帶你完成常見圖表繪制,需要的朋友可以參考下

引言

對(duì)于剛開始學(xué)習(xí) Python 數(shù)據(jù)分析的同學(xué)來說,數(shù)據(jù)可視化是非常重要的一步。很多時(shí)候,表格中的數(shù)字并不直觀,但只要畫成圖表,就能快速看出趨勢(shì)、對(duì)比關(guān)系和占比結(jié)構(gòu)。

本文將以 matplotlib 為核心,帶你完成常見圖表繪制,包括折線圖、柱狀圖、餅圖、中文亂碼解決、標(biāo)題和坐標(biāo)軸設(shè)置,以及從 Excel 中讀取數(shù)據(jù)并繪圖。文章中的代碼都適合初學(xué)者直接運(yùn)行和修改。

一、matplotlib 庫介紹

matplotlib 是 Python 中最常用的數(shù)據(jù)可視化庫之一,尤其適合繪制二維圖表。它可以繪制折線圖、柱狀圖、散點(diǎn)圖、餅圖、直方圖等常見統(tǒng)計(jì)圖,也可以對(duì)圖表標(biāo)題、坐標(biāo)軸、圖例、顏色、字體、網(wǎng)格線等進(jìn)行細(xì)致控制。

在 Python 數(shù)據(jù)分析中,matplotlib 經(jīng)常和下面這些庫一起使用:

  • numpy:用于數(shù)值計(jì)算
  • pandas:用于讀取和處理表格數(shù)據(jù)
  • matplotlib:用于把數(shù)據(jù)繪制成圖表

安裝方式如下:

pip install matplotlib pandas openpyxl

其中:

  • matplotlib 用來繪圖
  • pandas 用來讀取 Excel 或 CSV 數(shù)據(jù)
  • openpyxl 用來支持 pandas 讀取 .xlsx 文件

在代碼中,一般這樣導(dǎo)入:

import matplotlib.pyplot as plt

pyplotmatplotlib 中最常用的繪圖接口,初學(xué)階段重點(diǎn)掌握它即可。

二、解決 matplotlib 中文亂碼問題

很多初學(xué)者第一次使用 matplotlib 繪圖時(shí),會(huì)遇到中文標(biāo)題顯示為方塊、亂碼,或者負(fù)號(hào)顯示異常的問題。

可以在代碼開頭統(tǒng)一添加下面兩行配置:

import matplotlib.pyplot as plt

plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False

說明:

  • SimHei 是 Windows 系統(tǒng)中常見的黑體字體
  • axes.unicode_minus = False 用來解決負(fù)號(hào)顯示異常的問題

如果你使用 macOS,可以嘗試:

plt.rcParams["font.sans-serif"] = ["Arial Unicode MS"]

如果你使用 Linux,可以安裝中文字體后再配置對(duì)應(yīng)字體名稱,例如 Noto Sans CJK SC

三、繪制折線圖

折線圖適合展示數(shù)據(jù)隨時(shí)間或順序變化的趨勢(shì),例如每天銷售額、每月用戶數(shù)、溫度變化等。

下面的例子繪制一組“每月銷售額”數(shù)據(jù):

import matplotlib.pyplot as plt

plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False

months = ["1月", "2月", "3月", "4月", "5月", "6月"]
sales = [12000, 15000, 18000, 16000, 21000, 26000]

plt.figure(figsize=(8, 5))
plt.plot(months, sales, marker="o", color="blue", linewidth=2, label="銷售額")

plt.title("上半年銷售額趨勢(shì)")
plt.xlabel("月份")
plt.ylabel("銷售額(元)")
plt.legend()
plt.grid(True, linestyle="--", alpha=0.5)

plt.show()

常用參數(shù)說明:

  • marker="o":給每個(gè)數(shù)據(jù)點(diǎn)添加圓點(diǎn)標(biāo)記
  • color="blue":設(shè)置折線顏色
  • linewidth=2:設(shè)置線條寬度
  • label="銷售額":設(shè)置圖例文字
  • plt.legend():顯示圖例
  • plt.grid():顯示網(wǎng)格線

四、繪制柱狀圖

柱狀圖適合比較不同類別之間的數(shù)值大小,例如不同產(chǎn)品銷量、不同城市訂單數(shù)、不同部門收入等。

下面的例子繪制“不同產(chǎn)品銷量”柱狀圖:

import matplotlib.pyplot as plt

plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False

products = ["手機(jī)", "電腦", "耳機(jī)", "平板", "手表"]
sales = [320, 210, 560, 180, 260]

plt.figure(figsize=(8, 5))
plt.bar(products, sales, color="orange", width=0.6)

plt.title("不同產(chǎn)品銷量對(duì)比")
plt.xlabel("產(chǎn)品")
plt.ylabel("銷量")

for index, value in enumerate(sales):
    plt.text(index, value + 10, str(value), ha="center")

plt.show()

這里使用了 plt.text() 給柱子頂部添加數(shù)值標(biāo)簽,讓圖表更容易閱讀。

參數(shù)說明:

  • plt.bar(x, height):繪制柱狀圖
  • width=0.6:設(shè)置柱子的寬度
  • ha="center":讓文字水平居中

五、繪制餅圖

餅圖適合展示各部分在整體中的占比,例如銷售渠道占比、用戶來源占比、支出結(jié)構(gòu)等。

下面的例子繪制“用戶來源占比”餅圖:

import matplotlib.pyplot as plt

plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False

channels = ["搜索引擎", "短視頻", "社交媒體", "直接訪問", "郵件"]
users = [35, 25, 20, 15, 5]

plt.figure(figsize=(7, 7))
plt.pie(
    users,
    labels=channels,
    autopct="%.1f%%",
    startangle=90,
    counterclock=False
)

plt.title("用戶來源占比")
plt.show()

常用參數(shù)說明:

  • labels:設(shè)置每個(gè)扇區(qū)的名稱
  • autopct="%.1f%%":顯示百分比,并保留 1 位小數(shù)
  • startangle=90:設(shè)置餅圖起始角度
  • counterclock=False:按順時(shí)針方向繪制

六、設(shè)置圖表標(biāo)題和坐標(biāo)軸

一張完整的圖表通常需要包含標(biāo)題、橫坐標(biāo)名稱、縱坐標(biāo)名稱和圖例。否則讀者很難理解圖表表達(dá)的含義。

常用設(shè)置如下:

plt.title("圖表標(biāo)題")
plt.xlabel("橫坐標(biāo)名稱")
plt.ylabel("縱坐標(biāo)名稱")
plt.legend()

如果想設(shè)置標(biāo)題字體大小,可以這樣寫:

plt.title("圖表標(biāo)題", fontsize=16)
plt.xlabel("橫坐標(biāo)名稱", fontsize=12)
plt.ylabel("縱坐標(biāo)名稱", fontsize=12)

如果橫坐標(biāo)文字較長(zhǎng),可以旋轉(zhuǎn)一定角度:

plt.xticks(rotation=45)

如果圖表元素顯示得比較擠,可以使用:

plt.tight_layout()

它會(huì)自動(dòng)調(diào)整圖表邊距,減少文字被遮擋的情況。

七、從 Excel 中讀取數(shù)據(jù)繪圖

實(shí)際工作中,數(shù)據(jù)通常不是直接寫在代碼里,而是保存在 Excel 表格中。我們可以使用 pandas 讀取 Excel,再用 matplotlib 繪圖。

假設(shè)有一個(gè) Excel 文件 sales_data.xlsx,內(nèi)容如下:

月份銷售額
1月12000
2月15000
3月18000
4月16000
5月21000
6月26000

讀取并繪制折線圖:

import pandas as pd
import matplotlib.pyplot as plt

plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False

df = pd.read_excel("sales_data.xlsx")

months = df["月份"]
sales = df["銷售額"]

plt.figure(figsize=(8, 5))
plt.plot(months, sales, marker="o", color="green", linewidth=2)

plt.title("從 Excel 讀取數(shù)據(jù)繪制銷售額趨勢(shì)圖")
plt.xlabel("月份")
plt.ylabel("銷售額(元)")
plt.grid(True, linestyle="--", alpha=0.5)
plt.tight_layout()

plt.show()

如果你的 Excel 文件不在當(dāng)前 Python 文件所在目錄,需要寫完整路徑,例如:

df = pd.read_excel(r"D:\data\sales_data.xlsx")

注意路徑前面的 r,它可以避免 Windows 路徑中的反斜杠被轉(zhuǎn)義。

八、完整演示代碼

下面是一份完整示例代碼,會(huì)自動(dòng)創(chuàng)建一個(gè) Excel 文件,然后依次繪制折線圖、柱狀圖、餅圖,并演示如何從 Excel 中讀取數(shù)據(jù)繪圖。

你可以把它保存為 matplotlib_demo.py 后直接運(yùn)行。

import pandas as pd
import matplotlib.pyplot as plt


def set_chinese_font():
    """設(shè)置中文字體,解決中文亂碼和負(fù)號(hào)顯示問題。"""
    plt.rcParams["font.sans-serif"] = ["SimHei"]
    plt.rcParams["axes.unicode_minus"] = False


def draw_line_chart():
    months = ["1月", "2月", "3月", "4月", "5月", "6月"]
    sales = [12000, 15000, 18000, 16000, 21000, 26000]

    plt.figure(figsize=(8, 5))
    plt.plot(months, sales, marker="o", color="blue", linewidth=2, label="銷售額")

    plt.title("上半年銷售額趨勢(shì)", fontsize=16)
    plt.xlabel("月份")
    plt.ylabel("銷售額(元)")
    plt.legend()
    plt.grid(True, linestyle="--", alpha=0.5)
    plt.tight_layout()
    plt.show()


def draw_bar_chart():
    products = ["手機(jī)", "電腦", "耳機(jī)", "平板", "手表"]
    sales = [320, 210, 560, 180, 260]

    plt.figure(figsize=(8, 5))
    plt.bar(products, sales, color="orange", width=0.6)

    plt.title("不同產(chǎn)品銷量對(duì)比", fontsize=16)
    plt.xlabel("產(chǎn)品")
    plt.ylabel("銷量")

    for index, value in enumerate(sales):
        plt.text(index, value + 10, str(value), ha="center")

    plt.tight_layout()
    plt.show()


def draw_pie_chart():
    channels = ["搜索引擎", "短視頻", "社交媒體", "直接訪問", "郵件"]
    users = [35, 25, 20, 15, 5]

    plt.figure(figsize=(7, 7))
    plt.pie(
        users,
        labels=channels,
        autopct="%.1f%%",
        startangle=90,
        counterclock=False
    )

    plt.title("用戶來源占比", fontsize=16)
    plt.tight_layout()
    plt.show()


def create_excel_file():
    data = {
        "月份": ["1月", "2月", "3月", "4月", "5月", "6月"],
        "銷售額": [12000, 15000, 18000, 16000, 21000, 26000]
    }

    df = pd.DataFrame(data)
    df.to_excel("sales_data.xlsx", index=False)


def draw_chart_from_excel():
    df = pd.read_excel("sales_data.xlsx")

    months = df["月份"]
    sales = df["銷售額"]

    plt.figure(figsize=(8, 5))
    plt.plot(months, sales, marker="o", color="green", linewidth=2, label="Excel 數(shù)據(jù)")

    plt.title("從 Excel 讀取數(shù)據(jù)繪制銷售額趨勢(shì)圖", fontsize=16)
    plt.xlabel("月份")
    plt.ylabel("銷售額(元)")
    plt.legend()
    plt.grid(True, linestyle="--", alpha=0.5)
    plt.tight_layout()
    plt.show()


if __name__ == "__main__":
    set_chinese_font()
    create_excel_file()
    draw_line_chart()
    draw_bar_chart()
    draw_pie_chart()
    draw_chart_from_excel()

運(yùn)行代碼后,你會(huì)依次看到四張圖表:

  • 上半年銷售額折線圖
  • 不同產(chǎn)品銷量柱狀圖
  • 用戶來源占比餅圖
  • 從 Excel 讀取數(shù)據(jù)繪制的銷售額趨勢(shì)圖

九、初學(xué)者常見問題

1. 為什么運(yùn)行后沒有顯示圖表?

請(qǐng)確認(rèn)代碼最后調(diào)用了:

plt.show()

如果你在 Jupyter Notebook 中運(yùn)行,也可以在代碼最前面添加:

%matplotlib inline

2. 為什么中文還是亂碼?

可能是系統(tǒng)中沒有安裝代碼中指定的中文字體??梢韵炔榭聪到y(tǒng)字體,再把字體名稱改成可用字體。

Windows 常用:

plt.rcParams["font.sans-serif"] = ["SimHei"]

macOS 常用:

plt.rcParams["font.sans-serif"] = ["Arial Unicode MS"]

Linux 可以使用:

plt.rcParams["font.sans-serif"] = ["Noto Sans CJK SC"]

3. 為什么讀取 Excel 報(bào)錯(cuò)?

如果報(bào)錯(cuò)提示缺少 openpyxl,安裝即可:

pip install openpyxl

如果報(bào)錯(cuò)提示找不到文件,請(qǐng)檢查 Excel 文件名和路徑是否正確。

十、總結(jié)

本文介紹了 Python 數(shù)據(jù)可視化入門中最常用的 matplotlib 操作,包括:

  • matplotlib 庫的基本作用
  • 折線圖繪制
  • 柱狀圖繪制
  • 餅圖繪制
  • 中文亂碼和負(fù)號(hào)顯示問題解決
  • 圖表標(biāo)題、坐標(biāo)軸、圖例和網(wǎng)格線設(shè)置
  • 從 Excel 中讀取數(shù)據(jù)并繪圖
  • 一份可直接運(yùn)行的完整演示代碼

對(duì)于 Python 數(shù)據(jù)分析初學(xué)者來說,建議先熟練掌握折線圖、柱狀圖和餅圖這三類基礎(chǔ)圖表。后續(xù)再結(jié)合 pandas 做數(shù)據(jù)清洗和分組統(tǒng)計(jì),就可以完成很多實(shí)用的數(shù)據(jù)分析可視化任務(wù)。

以上就是Python+matplotlib繪制常見圖表的入門教程的詳細(xì)內(nèi)容,更多關(guān)于Python matplotlib繪制圖表的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python實(shí)現(xiàn)可以斷點(diǎn)續(xù)傳和并發(fā)的ftp程序

    python實(shí)現(xiàn)可以斷點(diǎn)續(xù)傳和并發(fā)的ftp程序

    斷點(diǎn)續(xù)傳和并發(fā)是現(xiàn)在很多ftp程序都支持的功能,如果我們用python如何來做斷點(diǎn)續(xù)傳和并發(fā)了,今天來看一篇python實(shí)現(xiàn)斷點(diǎn)續(xù)傳和并發(fā)的ftp程序例子吧,具體如下。
    2016-09-09
  • pandas中df.groupby()方法深入講解

    pandas中df.groupby()方法深入講解

    在使用pandas進(jìn)行數(shù)據(jù)統(tǒng)計(jì)分析時(shí)遇到了問題,找了很久才找到解決辦法,所以下面這篇文章主要給大家介紹了關(guān)于pandas中df.groupby()方法的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • 如何實(shí)現(xiàn)更換Jupyter Notebook內(nèi)核Python版本

    如何實(shí)現(xiàn)更換Jupyter Notebook內(nèi)核Python版本

    這篇文章主要介紹了如何實(shí)現(xiàn)更換Jupyter Notebook內(nèi)核Python版本,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Python實(shí)現(xiàn)將.py代碼轉(zhuǎn)換為帶語法高亮的Word和PDF

    Python實(shí)現(xiàn)將.py代碼轉(zhuǎn)換為帶語法高亮的Word和PDF

    本指南介紹了幾種將?Python?代碼轉(zhuǎn)換為?Word?和?PDF?文檔的方法,確保您的代碼易于閱讀,并且以專業(yè)的方式呈現(xiàn),有需要的小伙伴可以參考下
    2025-12-12
  • Python爬蟲代理IP池實(shí)現(xiàn)方法

    Python爬蟲代理IP池實(shí)現(xiàn)方法

    在公司做分布式深網(wǎng)爬蟲,搭建了一套穩(wěn)定的代理池服務(wù),為上千個(gè)爬蟲提供有效的代理,保證各個(gè)爬蟲拿到的都是對(duì)應(yīng)網(wǎng)站有效的代理IP,從而保證爬蟲快速穩(wěn)定的運(yùn)行,所以就想利用一些免費(fèi)的資源搞一個(gè)簡(jiǎn)單的代理池服務(wù)。
    2017-01-01
  • 淺談Python數(shù)據(jù)類型之間的轉(zhuǎn)換

    淺談Python數(shù)據(jù)類型之間的轉(zhuǎn)換

    下面小編就為大家?guī)硪黄獪\談Python數(shù)據(jù)類型之間的轉(zhuǎn)換。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-06-06
  • 淺析Python中的基本交易算法應(yīng)用

    淺析Python中的基本交易算法應(yīng)用

    這篇文章主要為大家詳細(xì)介紹了如何使用Python進(jìn)行基本交易算法的開發(fā),包括數(shù)據(jù)獲取,策略設(shè)計(jì),回測(cè)和性能評(píng)估等關(guān)鍵步驟,需要的可以參考下
    2025-01-01
  • Python基于多線程實(shí)現(xiàn)抓取數(shù)據(jù)存入數(shù)據(jù)庫的方法

    Python基于多線程實(shí)現(xiàn)抓取數(shù)據(jù)存入數(shù)據(jù)庫的方法

    這篇文章主要介紹了Python基于多線程實(shí)現(xiàn)抓取數(shù)據(jù)存入數(shù)據(jù)庫的方法,結(jié)合實(shí)例形式分析了Python使用數(shù)據(jù)庫類與多線程類進(jìn)行數(shù)據(jù)抓取與寫入數(shù)據(jù)庫操作的具體使用技巧,需要的朋友可以參考下
    2018-06-06
  • 使用python字典統(tǒng)計(jì)CSV數(shù)據(jù)的步驟和示例代碼

    使用python字典統(tǒng)計(jì)CSV數(shù)據(jù)的步驟和示例代碼

    為了使用Python字典來統(tǒng)計(jì)CSV數(shù)據(jù),我們可以使用內(nèi)置的csv模塊來讀取CSV文件,并使用字典來存儲(chǔ)統(tǒng)計(jì)信息,以下是一個(gè)詳細(xì)的步驟和完整的代碼示例,需要的朋友可以參考下
    2024-12-12
  • Jupyter、PyCharm配置Anaconda虛擬環(huán)境全過程

    Jupyter、PyCharm配置Anaconda虛擬環(huán)境全過程

    本文介紹了如何在Anaconda中創(chuàng)建、激活、安裝包、刪除包和刪除虛擬環(huán)境,以及如何將虛擬環(huán)境添加到Jupyter Notebook中,同時(shí),還提到了解決在安裝包時(shí)遇到的常見問題
    2026-02-02

最新評(píng)論

黄大仙区| 伊金霍洛旗| 宜黄县| 商洛市| 嘉善县| 兰溪市| 济宁市| 屯留县| 崇文区| 永泰县| 政和县| 颍上县| 长春市| 辽中县| 长宁区| 肇州县| 阜平县| 青河县| 调兵山市| 阿拉善左旗| 大余县| 开鲁县| 清原| 霍山县| 南皮县| 息烽县| 旬邑县| 玛沁县| 莱州市| 阿尔山市| 神木县| 永善县| 济南市| 古交市| 雷州市| 锡林郭勒盟| 萨嘎县| 姜堰市| 孟州市| 石柱| 大方县|