news 2026/8/14 14:36:39

初探 Data Analysis - Matplotlib

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
初探 Data Analysis - Matplotlib

前言

本篇聚焦 Matplotlib 核心 APIplt.plot()之應用:涵蓋 折線圖(Line Plot)的時間序列趨勢解析,以及散佈圖(Scatter Plot)**的資料分佈與樣式調校實戰。從 StackExchange 取得每種程式語言的貼文總數作為實作資料來源。

matplotlib.pyplot.plot()語法與參數說明

plt.plot(x, y, fmt, data=None, **kwargs)

參數名稱資料型態 / 預設值說明
x,yList / Array / Series

資料的坐標值

• 支援傳入 List、NumPy Array 或 Pandas Series/Column。

若省略x(僅傳入y:系統預設自動產生[0, 1, ..., N-1]作為 X 軸索引。

fmtstr(Format String)

快捷樣式字串

用簡短代碼一次設定顏色 (Color)標記 (Marker)線條樣式 (Line Style)

範例'r--o'代表紅色 (r)、虛線 (--)、圓點標記 (o)。

color/cstr

線條顏色

支援顏色名稱或 Hex 色碼(如'blue','#FF5733')。

linestyle/lsstr

線條樣式

常見選項:'-'(實線)、'--'(虛線)、':'(點線)、'-.'(點虛線)。

markerstr

數據點標記形狀

常見選項:'o'(圓點)、's'(方塊)、'^'(三角形)、'x'(叉號)。

linewidth/lwfloat/int線條寬度(預設粗細為1,數值越大線條越粗)。
labelstr

圖例標籤名稱

設定後需搭配plt.legend()呼叫,才會在圖表上顯示圖例。

測試資料來源

透過在 StackExchange 上執行 SQL 查詢來取得每種程式語言的貼文總數資料

點擊此連結從 [StackExchange](https://data.stackexchange.com/stackoverflow/query/675441/popular-programming-languages-per-over-time-eversql-com) 執行查詢以取得您自己的 .csv 文件

畫單條線

xpoints = np.array([1, 8]) ypoints = np.array([3, 10]) # 繪製兩個座標點,而不是一條線,可以使用 o 參數,表示一個實心圈的標記 plt.plot(xpoints, ypoints, 'o') plt.show()

執行結果​​​​​​

# 繪製一條不規則線 xpoints = np.array([1, 2, 6, 8]) ypoints = np.array([3, 8, 1, 10]) # marker 可以定義的符號 plt.plot(xpoints, ypoints,marker = '*') plt.show()

執行結果

範例 programming_posts.csv

Date,Language,Posts
"2008-07-01 00:00:00","c#","3"
"2008-08-01 00:00:00","assembly","8"
"2008-08-01 00:00:00","c","81"
"2008-08-01 00:00:00","c++","164"
"2008-08-01 00:00:00","java","220"
...
...
"2026-07-01 00:00:00","go","4"
"2026-07-01 00:00:00","java","70"
"2026-07-01 00:00:00","javascript","73"
"2026-07-01 00:00:00","perl","6"
"2026-07-01 00:00:00","php","27"
"2026-07-01 00:00:00","python","142"
"2026-07-01 00:00:00","r","54"
"2026-07-01 00:00:00","ruby","2"
"2026-07-01 00:00:00","swift","17"

實作

讀取CSV檔案

import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv(csv_path, names=['DATE', 'LANG', 'POSTS'], header=0) print(f"df.shape: {df.shape}, df.head()顯示前 5 列資料 :\n{df.head()}")

% python3 programming_posts.py
df.shape: (2999, 3), df.head()顯示前 5 列資料 :
DATE LANG POSTS
0 2008-07-01 00:00:00 c# 3
1 2008-08-01 00:00:00 assembly 8
2 2008-08-01 00:00:00 c 81
3 2008-08-01 00:00:00 c# 503
4 2008-08-01 00:00:00 c++ 164

# 日期轉換 df["DATE"] = pd.to_datetime( df["DATE"] ) # 把 Language 變成 Columns pivot_df = df.pivot( index="DATE", columns="LANG", values="POSTS" ) # fillna() 用常數 0 填入所有缺失值.傳回一個新的 DataFrame(如果 inplace=False),或 None(如果 inplace=True) pivot_df.fillna( 0, inplace=True ) # 繪製折線圖 plt.plot(pivot_df.index, pivot_df.java, label="java") plt.xticks(fontsize=14) plt.yticks(fontsize=14) plt.xlabel('DATE', fontsize=14) plt.ylabel('Number of Posts', fontsize=14) plt.ylim(0, 35000) plt.legend(fontsize=14) plt.show()

執行結果​​​​​​

# 繪製各語言貼文折線圖 plt.figure(figsize=(15,8)) for column in pivot_df.columns: plt.plot( pivot_df.index, pivot_df[column], label=column ) plt.legend() plt.title("Programming Language Trend") plt.xlabel("Date") plt.ylabel("Posts") plt.show()

執行結果​​​​​​

# Rolling Mean 三個月平均 rolling_df = pivot_df.rolling( window=3 ).mean() plt.figure(figsize=(18,9)) for column in rolling_df.columns: plt.plot( rolling_df.index, rolling_df[column], linewidth=3, label=column ) plt.legend() plt.grid() plt.xlabel("Year") plt.ylabel("Average Posts") plt.title("3-Month Rolling Average") plt.tight_layout() plt.show()

執行結果​​​​​​

​​​​​​​

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/14 14:36:36

常营网站建设公司:为何选择本地服务商比互联网大厂更懂你的生意?

在这个万物皆可链接的数字化时代,我们常营地区的企业老板们,大概每天都在思考同一个问题:我的生意怎么才能更好地在网上被找到?是不是花几万块找个北京海淀或者朝阳区的大公司做网站,就能一夜之间销量翻倍?说实话,我也见过太多这样的案例。有些老板花了真金白银,找了一…

作者头像 李华
网站建设 2026/8/14 14:35:47

揭秘网站建设应用技术:从底层逻辑到前端交互的全流程深度解析

在这个数字化浪潮汹涌的时代,几乎每一个企业主或者创业者,脑子里都会蹦出同一个念头:我需要一个网站。这听起来简单得有些天真,仿佛只要敲几个键盘,一个光鲜亮丽的网上商店或者品牌展示厅就诞生了。但实际上,当我们真正静下心来,去审视那个所谓的“网站建设应用技术”时…

作者头像 李华
网站建设 2026/8/14 14:35:46

猫抓扩展完整实战手册:免费M3U8嗅探下载从装到玩透

猫抓扩展完整实战手册:免费M3U8嗅探下载从装到玩透 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 深夜刷到一段必须在线看、不让保存的…

作者头像 李华
网站建设 2026/8/14 14:35:25

2024年企业数字化转型避坑指南:揭秘顶级网站建设公司格如何打造高转化品牌官网

在这个互联网流量红利逐渐见顶、竞争格局日趋白热化的今天,对于绝大多数中小企业老板和品牌主理人来说,"做网站"这三个字听起来简单,实则暗藏玄机。很多人都有过这样的经历:预算拨过去了,合同签了,然后就是漫长的等待。交付的时候一看,页面丑得像上世纪九十年…

作者头像 李华
网站建设 2026/8/14 14:35:20

智能体测开Day49 Day50Jmeter性能测试

什么是性能测试?性能测试就是通过特定的方式对被测系统按照一定测试策略施加压力,获取该系统的响应时间、TPS、吞吐量、资源利用率等指标,来检测系统上线后能否满足用户需求的过程。 负载测试与压力测试是最常用的两种性能测试策略。两者可以…

作者头像 李华