当前位置: 首页 > news >正文

初探 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()

執行結果​​​​​​

​​​​​​​

http://www.cnnetsun.cn/news/4024290.html

相关文章:

  • 常营网站建设公司:为何选择本地服务商比互联网大厂更懂你的生意?
  • 揭秘网站建设应用技术:从底层逻辑到前端交互的全流程深度解析
  • 猫抓扩展完整实战手册:免费M3U8嗅探下载从装到玩透
  • 2024年企业数字化转型避坑指南:揭秘顶级网站建设公司格如何打造高转化品牌官网
  • 智能体测开Day49 Day50Jmeter性能测试
  • Java SMB 客户端实战速通:用 jcifs-ng 十分钟打通 Windows 共享文件读取
  • 揭秘甘肃省城乡建设厅网站背后的政策脉络与办事指南,助您轻松搞定房产与工程事宜
  • 怀远网站建设哪家好:揭秘本地中小企业选择建站公司的真实内幕与避坑指南
  • 忘掉 Apple ID 密码?applera1n 用一次“内存级“引导替换帮你绕过 iOS 15-16 激活锁
  • 企业网站建设的原则包括:从起步到卓越的实战指南,让流量变留量
  • 网站基建建设:新手入门全攻略与避坑指南
  • 手机网站建设万网:为什么你的流量总跑不过同行?揭秘移动端转化的核心秘密
  • 北京十里堡网站建设全流程解析与企业数字化升级实战指南
  • 【软考信息安全】第1章 网络信息安全概述
  • 大连网站建设金豆多少钱大连网站建设金豆如何提升大连网站建设金豆企业品牌形象
  • 别只盯着颜值看!揭秘四川酒店网站建设那些不为人知的转化率秘密
  • 陕西网站建设公司找哪家好?深度解析避坑指南与实战建议
  • Agent 接入开发全链路,先从只读任务开始
  • 商城网站建设流程图:从0到1的完整揭秘,手把手教你避坑指南,新手必看的实战经验
  • 揭秘企业网站建设市场前景与数字化转型必由之路的深度洞察
  • 免费开源的 BRD 电路板查看器:5 分钟上手 OpenBoardView 完整实战指南
  • 网站建设狼盾网络揭秘:为什么中小企业在做网站时往往掉进这些深坑
  • 建站初学者必看网站建设中的html页面核心逻辑与实战避坑指南
  • 2024年最新版云南建设学校网站登陆指南及常见问题详细解析教程
  • 东营网站建设dysem:从代码到商业价值的深度转化之路
  • 揭秘元谋网站建设背后的隐形成本与价值真相:如何让小预算也能拥有大品牌网站
  • 深圳网站建设qwyx100:2024年企业突围的数字化引擎与实操避坑指南
  • 学校网站建设自查报告:从合规到体验的全面审视
  • 泗水网站建设ys178深耕本土市场:揭秘企业如何用低成本打造高转化官网
  • 济宁网站建设 帮站:为什么你的企业官网在本地市场毫无存在感