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

Python繪制各類折線圖的完整指南

 更新時(shí)間:2025年07月24日 09:03:21   作者:空腦小白  
折線圖是數(shù)據(jù)可視化中最常用的圖表類型之一,適用于展示數(shù)據(jù)隨時(shí)間或有序類別變化的趨勢,本文將詳細(xì)介紹如何用 Python 的 Matplotlib、Seaborn 和 Plotly 庫繪制各類折線圖,從基礎(chǔ)到進(jìn)階,覆蓋常見場景及定制技巧,需要的朋友可以參考下

引言

折線圖是數(shù)據(jù)可視化中最常用的圖表類型之一,適用于展示數(shù)據(jù)隨時(shí)間或有序類別變化的趨勢。無論是分析銷售額波動(dòng)、溫度變化,還是對比多組數(shù)據(jù)的趨勢差異,折線圖都能直觀呈現(xiàn)數(shù)據(jù)的變化規(guī)律。本文將詳細(xì)介紹如何用 Python 的 Matplotlib、Seaborn 和 Plotly 庫繪制各類折線圖,從基礎(chǔ)到進(jìn)階,覆蓋常見場景及定制技巧。

一、準(zhǔn)備工作:環(huán)境與工具

在開始繪圖前,需確保安裝必要的庫,并解決中文顯示問題(避免標(biāo)題 / 標(biāo)簽亂碼)。

1. 安裝依賴庫

常用的折線圖繪制庫包括:

  • Matplotlib:Python 最基礎(chǔ)的繪圖庫,功能全面,可高度定制;
  • Seaborn:基于 Matplotlib 的高級封裝,風(fēng)格更美觀,適合統(tǒng)計(jì)可視化;
  • Plotly:交互式繪圖庫,支持動(dòng)態(tài)交互(懸停、縮放等)。

 安裝命令:

pip install matplotlib seaborn plotly pandas numpy

2. 全局設(shè)置(解決中文顯示問題)

Matplotlib 默認(rèn)不支持中文,需提前配置字體:

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd
 
# 設(shè)置中文顯示
plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"]  # 支持中文
plt.rcParams["axes.unicode_minus"] = False  # 解決負(fù)號顯示問題
sns.set(font_scale=1.2)  # Seaborn字體縮放

二、基礎(chǔ)折線圖:單條與多條數(shù)據(jù)

1. 單條折線圖

適用于展示一組數(shù)據(jù)的變化趨勢(如某產(chǎn)品月度銷量)。

示例代碼

# 生成數(shù)據(jù):x為月份,y為銷量
x = np.arange(1, 13)  # 1-12月
y = np.random.randint(50, 150, size=12)  # 隨機(jī)生成50-150的銷量
 
# 創(chuàng)建畫布
plt.figure(figsize=(10, 6))  # 畫布大小(寬, 高)
 
# 繪制折線圖
plt.plot(x, y,  # x軸、y軸數(shù)據(jù)
         color='skyblue',  # 線條顏色
         marker='o',  # 數(shù)據(jù)點(diǎn)標(biāo)記(圓形)
         linestyle='-',  # 線條樣式(實(shí)線)
         linewidth=2,  # 線條寬度
         markersize=6)  # 標(biāo)記大小
 
# 添加標(biāo)題和標(biāo)簽
plt.title('2023年某產(chǎn)品月度銷量趨勢', fontsize=15)
plt.xlabel('月份', fontsize=12)
plt.ylabel('銷量(件)', fontsize=12)
 
# 設(shè)置x軸刻度(1-12月)
plt.xticks(x)
 
# 添加網(wǎng)格線(輔助閱讀)
plt.grid(alpha=0.3)  # alpha控制透明度
 
# 顯示圖表
plt.show()

關(guān)鍵技巧:通過label參數(shù)定義每條線的名稱,用plt.legend()顯示圖例;用不同顏色、標(biāo)記區(qū)分多條線,提升可讀性。

三、進(jìn)階折線圖:應(yīng)對復(fù)雜場景

1. 帶誤差線的折線圖

當(dāng)數(shù)據(jù)存在波動(dòng)范圍(如實(shí)驗(yàn)重復(fù)的標(biāo)準(zhǔn)差)時(shí),誤差線可直觀展示數(shù)據(jù)的可靠性。

示例代碼

# 生成數(shù)據(jù)(模擬實(shí)驗(yàn)數(shù)據(jù))
x = np.arange(1, 11)  # 實(shí)驗(yàn)次數(shù)
y = np.random.normal(50, 10, 10)  # 均值50,標(biāo)準(zhǔn)差10的隨機(jī)數(shù)據(jù)
error = np.random.uniform(2, 5, 10)  # 誤差范圍(2-5)
 
plt.figure(figsize=(10, 6))
 
# 繪制帶誤差線的折線圖
plt.errorbar(x, y, 
             yerr=error,  # y方向誤差
             fmt='-o',  # 線條樣式(-實(shí)線+o標(biāo)記)
             ecolor='gray',  # 誤差線顏色
             elinewidth=1,  # 誤差線寬度
             capsize=3)  # 誤差線末端橫線長度
 
plt.title('實(shí)驗(yàn)數(shù)據(jù)趨勢與誤差范圍', fontsize=15)
plt.xlabel('實(shí)驗(yàn)次數(shù)', fontsize=12)
plt.ylabel('測量值', fontsize=12)
plt.grid(alpha=0.3)
plt.show()

效果:折線中每個(gè)數(shù)據(jù)點(diǎn)都帶有上下誤差線,清晰展示數(shù)據(jù)的波動(dòng)范圍。

2. 時(shí)間序列折線圖

時(shí)間序列數(shù)據(jù)(如每日氣溫、每周銷售額)的 x 軸為日期,需特殊處理日期格式。

示例代碼

import pandas as pd
 
# 生成時(shí)間序列數(shù)據(jù)(2023年1-3月,共90天)
dates = pd.date_range(start='2023-01-01', end='2023-03-31', freq='D')
values = np.random.randint(10, 30, size=len(dates))  # 模擬每日溫度(10-30℃)
 
plt.figure(figsize=(14, 6))
 
# 繪制時(shí)間序列折線圖
plt.plot(dates, values, color='orange', linewidth=1.5)
 
# 格式化x軸日期(避免重疊)
plt.gcf().autofmt_xdate()  # 自動(dòng)旋轉(zhuǎn)日期標(biāo)簽
plt.xlabel('日期', fontsize=12)
plt.ylabel('溫度(℃)', fontsize=12)
plt.title('2023年1-3月每日溫度趨勢', fontsize=15)
plt.grid(alpha=0.3)
plt.show()

關(guān)鍵技巧:用pandas.date_range生成日期序列;通過plt.gcf().autofmt_xdate()自動(dòng)旋轉(zhuǎn) x 軸日期標(biāo)簽,避免文字重疊。

3. 雙 Y 軸折線圖

當(dāng)兩組數(shù)據(jù)量級差異大(如 “銷售額” 和 “訂單量”)時(shí),雙 Y 軸可避免其中一組數(shù)據(jù)趨勢被壓縮。

示例代碼

# 生成數(shù)據(jù)(量級差異大的兩組數(shù)據(jù))
x = np.arange(1, 13)  # 月份
y1 = np.random.randint(1000, 5000, 12)  # 銷售額(千級)
y2 = np.random.randint(20, 80, 12)      # 訂單量(十級)
 
# 創(chuàng)建畫布和第一個(gè)Y軸
fig, ax1 = plt.subplots(figsize=(12, 6))
 
# 繪制第一組數(shù)據(jù)(銷售額)
ax1.plot(x, y1, color='blue', label='銷售額')
ax1.set_xlabel('月份', fontsize=12)
ax1.set_ylabel('銷售額(元)', color='blue', fontsize=12)
ax1.tick_params(axis='y', labelcolor='blue')  # Y軸標(biāo)簽顏色
 
# 創(chuàng)建第二個(gè)Y軸(共享X軸)
ax2 = ax1.twinx()
ax2.plot(x, y2, color='red', label='訂單量')
ax2.set_ylabel('訂單量(單)', color='red', fontsize=12)
ax2.tick_params(axis='y', labelcolor='red')
 
# 合并圖例
lines1, labels1 = ax1.get_legend_handles_labels()
lines2, labels2 = ax2.get_legend_handles_labels()
ax1.legend(lines1 + lines2, labels1 + labels2, loc='upper left')
 
plt.title('月度銷售額與訂單量趨勢', fontsize=15)
plt.grid(alpha=0.3)
plt.show()

效果:左側(cè) Y 軸展示銷售額(千級),右側(cè) Y 軸展示訂單量(十級),兩組數(shù)據(jù)趨勢均清晰可見。

4. 填充區(qū)域折線圖

在折線下方填充顏色,可增強(qiáng)數(shù)據(jù)的視覺聚焦效果(如突出累積趨勢)。

示例代碼

# 生成數(shù)據(jù)(累積增長趨勢)
x = np.arange(1, 11)
y = np.cumsum(np.random.randint(5, 15, 10))  # 累積求和(模擬用戶增長)
 
plt.figure(figsize=(10, 6))
 
# 繪制折線并填充下方區(qū)域
plt.plot(x, y, color='purple', linewidth=2)
plt.fill_between(x, y,  # x范圍、y上限(折線)、y下限(0)
                 color='purple', 
                 alpha=0.2)  # 透明度(0-1)
 
plt.title('產(chǎn)品用戶累積增長趨勢', fontsize=15)
plt.xlabel('上線月份', fontsize=12)
plt.ylabel('累積用戶數(shù)', fontsize=12)
plt.grid(alpha=0.3)
plt.show()

效果:折線下方被半透明紫色填充,突出數(shù)據(jù)的累積增長趨勢。

四、交互式折線圖(Plotly)

靜態(tài)折線圖無法交互,而 Plotly 可生成支持懸停查看數(shù)據(jù)、縮放、平移的動(dòng)態(tài)圖表,適合網(wǎng)頁展示。

示例代碼

import plotly.express as px
 
# 生成數(shù)據(jù)(多組產(chǎn)品銷量)
df = pd.DataFrame({
    '月份': np.arange(1, 13),
    '產(chǎn)品A': np.random.randint(50, 100, 12),
    '產(chǎn)品B': np.random.randint(80, 150, 12),
    '產(chǎn)品C': np.random.randint(30, 80, 12)
})
 
# 轉(zhuǎn)換為長格式(適合Plotly)
df_long = df.melt('月份', var_name='產(chǎn)品', value_name='銷量')
 
# 繪制交互式折線圖
fig = px.line(df_long, 
              x='月份', 
              y='銷量', 
              color='產(chǎn)品',  # 按產(chǎn)品區(qū)分線條
              title='2023年三大產(chǎn)品月度銷量趨勢(交互式)',
              markers=True)  # 顯示數(shù)據(jù)點(diǎn)標(biāo)記
 
# 顯示圖表(自動(dòng)打開瀏覽器/IDE內(nèi)置窗口)
fig.show()

交互功能

  • 懸停在數(shù)據(jù)點(diǎn)上可查看具體數(shù)值(月份、產(chǎn)品、銷量);
  • 點(diǎn)擊圖例可隱藏 / 顯示對應(yīng)產(chǎn)品的折線;
  • 支持縮放(鼠標(biāo)滾輪)、平移(拖拽)、下載圖片。

五、總結(jié)

折線圖是展示趨勢的核心工具,Python 的 Matplotlib、Seaborn 和 Plotly 庫可滿足不同需求:

  • 基礎(chǔ)靜態(tài)圖:用 Matplotlib,靈活定制樣式;
  • 統(tǒng)計(jì)風(fēng)格圖:用 Seaborn,默認(rèn)風(fēng)格更美觀;
  • 交互式圖表:用 Plotly,適合動(dòng)態(tài)探索數(shù)據(jù)。

實(shí)際應(yīng)用中,需根據(jù)數(shù)據(jù)特點(diǎn)選擇合適的折線圖類型:對比多組數(shù)據(jù)用多條折線,展示波動(dòng)用誤差線,處理時(shí)間數(shù)據(jù)用時(shí)間序列圖,量級差異大用雙 Y 軸。通過合理定制樣式(顏色、標(biāo)記、標(biāo)簽),可讓折線圖更直觀地傳遞數(shù)據(jù)信息。

以上就是Python繪制各類折線圖的完整指南的詳細(xì)內(nèi)容,更多關(guān)于Python繪制各類折線圖的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Tensorflow實(shí)現(xiàn)將標(biāo)簽變?yōu)閛ne-hot形式

    Tensorflow實(shí)現(xiàn)將標(biāo)簽變?yōu)閛ne-hot形式

    這篇文章主要介紹了Tensorflow實(shí)現(xiàn)將標(biāo)簽變?yōu)閛ne-hot形式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python用pyinstaller封裝exe雙擊后瘋狂閃退解決辦法

    python用pyinstaller封裝exe雙擊后瘋狂閃退解決辦法

    本文主要介紹了python用pyinstaller封裝exe雙擊后瘋狂閃退解決辦法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • django-crontab實(shí)現(xiàn)服務(wù)端的定時(shí)任務(wù)的示例代碼

    django-crontab實(shí)現(xiàn)服務(wù)端的定時(shí)任務(wù)的示例代碼

    這篇文章主要介紹了django-crontab實(shí)現(xiàn)服務(wù)端的定時(shí)任務(wù)的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Python中實(shí)現(xiàn)3D模型動(dòng)態(tài)加載的4種方法

    Python中實(shí)現(xiàn)3D模型動(dòng)態(tài)加載的4種方法

    本文討論了Python中實(shí)現(xiàn)3D模型動(dòng)態(tài)加載的方法,包括PyOpenGL、Panda3D和ModernGL等,詳細(xì)介紹了基于PyOpenGL的渲染管線和模型加載;利用VPython的場景構(gòu)建和對象管理;基于ModernGL的高效GPU加速方案;四種方法綜合對比與未來優(yōu)化方向等場景,需要的朋友可以參考下
    2026-04-04
  • 基于Python實(shí)現(xiàn)多圖繪制系統(tǒng)

    基于Python實(shí)現(xiàn)多圖繪制系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了如何基于Python實(shí)現(xiàn)一個(gè)簡單的多圖繪制系統(tǒng),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02
  • Python創(chuàng)建多行字符串的多種方法

    Python創(chuàng)建多行字符串的多種方法

    在 Python 中,創(chuàng)建多行字符串是一個(gè)常見的需求,尤其是在處理配置文件、文檔字符串、HTML 模板等場景中,Python 提供了多種方式來創(chuàng)建多行字符串,本文將給大家詳細(xì)的介紹一下這些方法,需要的朋友可以參考下
    2024-11-11
  • Python全棧之隊(duì)列詳解

    Python全棧之隊(duì)列詳解

    這篇文章主要為大家介紹了Python全棧之隊(duì)列,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • 詳解Python locals()的陷阱

    詳解Python locals()的陷阱

    這篇文章主要介紹了詳解Python locals()的陷阱,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-03-03
  • Python YAML文件處理的完整指南

    Python YAML文件處理的完整指南

    yaml是一種比xml和json更輕的文件格式,也更簡單更強(qiáng)大,它可以通過縮進(jìn)來表示結(jié)構(gòu),聽著就和Python很配對不對?本文給大家詳細(xì)介紹了Python YAML文件處理的完整指南,需要的朋友可以參考下
    2025-07-07
  • Python之讀取TXT文件的方法小結(jié)

    Python之讀取TXT文件的方法小結(jié)

    下面小編就為大家分享一篇Python之讀取TXT文件的方法小結(jié),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04

最新評論

自治县| 巴马| 油尖旺区| 乌拉特后旗| 龙南县| 磐安县| 甘德县| 萍乡市| 龙陵县| 白城市| 安丘市| 九江县| 江口县| SHOW| 洞头县| 汕尾市| 博爱县| 南岸区| 仁寿县| 那坡县| 阳春市| 梁山县| 井冈山市| 尼玛县| 新乡县| 宜兴市| 元阳县| 德令哈市| 简阳市| 沙洋县| 新竹市| 禹州市| 五家渠市| 青龙| 公安县| 侯马市| 敖汉旗| 鄂州市| 曲水县| 沛县| 佛冈县|