python數據處理-matplotlib入門(1)--安裝及繪製簡單的曲線

来源:https://www.cnblogs.com/codingchen/archive/2022/04/24/16168311.html
-Advertisement-
Play Games

一、安裝matplotlib 1)由於已安裝anaconda,可直接打開anaconda prompt,再用命令pip install matplotlib進行安裝,因鏡像問題,可能較慢,建議第2種方式。 2)訪問https://pypi.org/project/matplotlib/#files, ...


一、安裝matplotlib

1)由於已安裝anaconda,可直接打開anaconda prompt,再用命令pip install matplotlib進行安裝,因鏡像問題,可能較慢,建議第2種方式。

2)訪問https://pypi.org/project/matplotlib/#files,並查找與你使用的Python版本匹配的wheel文件(擴展名為.whl的文件),比如與python3.9版本相應的matplotlib-3.5.1-cp39-cp39-win_amd64.whl放在目錄G:\develop\python下,(或者你自己所建目錄)

打開anaconda prompt,再用命令pip install G:\develop\python\matplotlib-3.5.1-cp39-cp39-win_amd64.whl(註意目錄要保持一致) 執行完成即可。

 二、測試 matplotlib

打開anaconda prompt 先輸入python,再輸入 import matplotlib,如圖所示,沒有出現任何錯誤消息,就說明系統安裝成功。

三、 繪製簡單的折線

import matplotlib.pyplot as plt   #導入模塊matplotlib.pyplot,並重新命名為plt

squares = [1,4,9,16,25,36,49,64,81,100]  #定義一個數組

plt.plot(squares, linewidth=5)# 設置圖表標題,並給坐標軸加上標簽和 參數 linewidth 決定了繪製的線條的粗細
plt.title("Square Numbers", fontsize=24)#設置標題和字體大小
plt.xlabel("Value", fontsize=14)  #  x軸標簽,和字體大小
plt.ylabel("Square of Value", fontsize=14)  #  y軸標簽,和字體大小
plt.tick_params(axis='both', labelsize=14) # 設置刻度標記的大小,函數 tick_params() 設置刻度的樣式
plt.show()

這樣就完成一個簡單的折線圖,運行效果如下:

註:如果運行過程中,出現圖中紅色方框所示警告需要重新設置spyder中Tools,如下圖所示:

 

 四、使用 scatter() 繪製散點圖並設置其樣式

1、要繪製單個點

可使用函數 scatter() ,並向它傳遞一對x和y坐標,它將在指定位置繪製一個點:

import matplotlib.pyplot as plt   #導入模塊matplotlib.pyplot,並重新命名為plt

plt.scatter(2, 4, s=200) #調用了scatter(),並使用實參s設置了繪製圖形時使用的點的尺寸,位置為2,4

plt.title("Square Numbers", fontsize=24) # 設置圖表標題並給坐標軸加上標簽
plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14)
# 設置刻度標記的大小
plt.tick_params(axis='both', which='major', labelsize=14)
plt.show()

2、要繪製系列點

繪製系列點,只需要給出系列點的坐標即可。我們將上述代碼中plt.scatter(2, 4, s=200)的2,4分別用兩個數列代替。

import matplotlib.pyplot as plt   #導入模塊matplotlib.pyplot,並重新命名為plt

x_values = [1, 2, 3, 4, 5]  #X軸的數列
y_values = [1, 3,6, 9, 12]  #y軸的數列
plt.scatter(x_values, y_values, s=100) #調用了scatter(),並使用實參s設置了繪製圖形時使用的點的尺寸  
plt.title(
" series Numbers", fontsize=24) # 設置圖表標題並給坐標軸加上標簽
plt.xlabel("Value", fontsize=14)
plt.ylabel(
"Value", fontsize=14) # 設置刻度標記的大小
plt.tick_params(axis='both', which='major', labelsize=14)
plt.show()

運行結果如下:

 3、自動計算數據

像上述手動輸入點數,或數列,都是比較慢的處理方式 ,下麵用for迴圈來替代手工輸入。

可以先將x_values定義為一個數列,數值在一定的範圍,比如1-1000,而對應的y_values也是一個數列,按一定的方式(函數)產生。於是,可以將上述代碼修改為如下:

import matplotlib.pyplot as plt   #導入模塊matplotlib.pyplot,並重新命名為plt

x_values = list(range(1, 1001))  #定義一個1-1000的數列,
y_values = [x**2 for x in x_values]  #定義Y值的生成方式。

plt.scatter(x_values, y_values, s=4) #調用了scatter(),並使用實參s設置了繪製圖形時使用的點的尺寸

plt.title(" series Numbers", fontsize=24) # 設置圖表標題並給坐標軸加上標簽
plt.xlabel("Value", fontsize=14)
plt.ylabel("Value", fontsize=14)
# 設置刻度標記的大小
plt.tick_params(axis='both', which='major', labelsize=10)
plt.axis([1,1100,1,1100000]) #註意一下axis的參數
plt.show()

運行結果如下:

matplotlib中的點預設為藍色點和黑色輪廓,如上述三圖所示,其中最後一圖因為點較多,且連在一起,像是一條曲線,為區別不同的點,可以對點分別不同的顏色。

只需再配置幾個參數 ,就可以刪除黑色輪廓,和修改點的顏色。

plt.scatter(x_values, y_values, edgecolor='none', s=40),其中edgecolor='none'表示將黑色輪廓刪除

修改數據點的顏色,可向 scatter() 傳遞參數 c ,並將其設置為要使用的顏色的名稱,如下:

plt.scatter(x_values, y_values, c='red', edgecolor='none', s=40) # 將顏色修改為紅色。

1、顏色映射(colormap)

顏色映射是一系列顏色,從起始顏色漸變到結束顏色。在可視化中,顏色映射用於突出數據的規律

plt.scatter(x_values, y_values, c=y_values, cmap=plt.cm.Blues,edgecolor='none', s=40) 
#調用了scatter()參數 c 設置成了一個y值列表,並使用參數 cmap 告訴 pyplot 使用哪個顏色映射, # 將y值較小的點顯示為淺藍色,並將y值較大的點顯示為深藍色

具體運行效果如下:

註意,要瞭解所有相關顏色的映射,可訪問官網  http://matplotlib.org/,單擊Examples,向下滾動到Color Examples,再單擊colormaps_reference進行參考。

4、自動保存圖表

方法 plt.show() 是顯示圖表

要讓程式自動將圖表保存到文件中,可調用 plt.savefig() 方法

plt.savefig('scatter.png', bbox_inches='tight')  #保存為scatter.png的圖片文件

預告:下一篇將通過隨機函數,類、數列、matplotlib等綜合應用,生成一個隨機圖形。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前段時間在Android原生搞的BLE掃碼槍又要移植到小程式上來。本以為小程式不支持BLE的,結果一搜,還真支持-_-|| 。 藍牙部分問題不大,遇到的主要問題是,小程式環境如何對字元編碼進行判斷以及如何進行編碼轉文字的問題。 掃了一陣,搜到了TextDecoder。結果小程式環境不支持……。 隨後 ...
  • 一、從用戶請求到瀏覽器渲染的過程大致如下 1.用戶輸入功能變數名稱,然後DNS解析成IP地址 2.瀏覽器根據IP地址請求伺服器 3.伺服器響應http請求,並返回給瀏覽器 4.瀏覽開始渲染: 。根據html,生成DOM TREE 。根據css,生成CSS TREE 。將DOM TREE和CSS TREE結合 ...
  • BIM模型輕量化顯示地圖引擎、BIM模型文件轉換引擎、BIM線上編輯器是BIM模型輕量化的核心技術,具有一定的技術門檻。易景空間ESMap本著開放的精神,把核心技術提供給廣大的BIM開發者,使得開發者即使沒有掌握任何圖形技術,也能輕鬆開發強大的BIM應用。 ...
  • 背景介紹 當頁面內容很多的時候,用戶可能會一直往下滑動頁面。但是當他想返回頁面頂部進行其他操作時,他可能需要不斷滾動滑鼠滾輪,這就導致用戶體驗將很差。鑒於這種情況, “回到頂部”這一功能便出現了。 如今在我們瀏覽網站的時候,常常能遇見“回到頂部”這個按鈕。目前主流的回到頁面頂部分表現為兩種,一種是直 ...
  • 狀態模式是什麼 狀態模式是一種行為設計模式,讓你能在一個對象的內部狀態變化時改變其行為,使其看上去就像改變了自身所屬的類一樣。 為什麼要用狀態模式 如果對象需要根據自身當前狀態進行不同行為,同時狀態的數量非常多且與狀態相關的代碼會頻繁變更的話,可使用狀態模式。相似狀態和基於條件的狀態機轉換中存在許多 ...
  • 本篇主要講從技術體繫到商業洞察,分為五個小節,新一代開發範式雲原生、建立自己的技術體系、技術判斷力、技術業務產業周期,技術與商業洞察。對於新一代開發範式和技術體系的建立,文字部分我就不再補充,具體可以看看PPT。這裡我想講技術判斷力和商業洞察,這是建立技術體系之後,對關鍵點的判斷和洞察,是從點到面再 ...
  • 此文系【大話雲原生】系列第四篇,該系列文章期望用最通俗、簡單的語言說明白雲原生生態系統內的組成、架構以及應用關係。從這篇開始我們要開始針對Kubernetes進行介紹了,本文內容如下: 一、Kubernetes的Pod概念解析 前文說到老婆過生日了我們一起出去旅游,上了團體服務班車,小娜同學(老婆) ...
  • 什麼是分散式鎖 當多個進程在同一個系統中,用分散式鎖控制多個進程對資源的訪問 分散式鎖應用場景 傳統的單體應用單機部署情況下,可以使用java併發處理相關的API進行互斥控制。 分散式系統後由於多線程,多進程分佈在不同機器上,使單機部署情況下的併發控制鎖策略失效,為瞭解決跨JVM互斥機制來控制共用資 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...