3.數據可視化入門介紹

来源:https://www.cnblogs.com/bonheur/archive/2020/03/08/12444792.html
-Advertisement-
Play Games

數據可視化庫:1.matplotlib; 2.seabron(輔助的庫,更強大更豐富更好看); 3.Axes3D ...1.導包 1 import numpy as np 2 import pandas as pd 3 4 import matplotlib.pyplot as plt 5 6 im ...


數據可視化庫:1.matplotlib; 2.seabron(輔助的庫,更強大更豐富更好看); 3.Axes3D ...
1.導包

 1 import numpy as np
 2 import pandas as pd
 3 
 4 import matplotlib.pyplot as plt
 5 
 6 import seaborn as sns
 7  8 #去除執行當中報警告提示的庫
 9 import warnings
10 warnings.filterwarnings("ignore")
11

2.圖形初始化設置

 1 # 全局樣式,style樣式,use使用figure身材,figsize(x,y)大小,單位是英寸
 2 plt.style.use({'figure.figsize':(20,10)})
 3 
 4 # 顯示問題衝突 
 5 plt.show()               # 強制顯示
 6 
 7 #在pycharm中使用,圖片列印不出來的時候,使用魔法方法,在行里顯示,只能在jupyter中使用
 8 %matplotlib inline  
 9  
10 #國外的庫都不支持中文
11 from pylab import mpl   # 使得預設支持中文 需要引入pylab庫中的mpl
12 mpl.rcParams['font.sans-serif'] = ['SimHei']  # 設置字體
13 mpl.rcParams['axes.unicode_minus'] = False

3.seaborn庫基本設置

 1 sns.set_style('darkgrid') # sns設置背景顏色  white(預設)  dark暗色  darkgrid暗網
 2 
 3 sns.set_style()           # 設置樣式
 4 
 5 sns.set_context('paper')  # 控制刻度
 6 
 7 # 調色板
 8 sns.color_palette()       # 設置顏色
 9 sns.set_palette()         # 設置顏色
10 sns.palplot()             # 顯示顏色,在數據可視化中,帶有plot的都是顯示作用
11 12 # h=0.01, l=0.6 (亮度), s=0.65(飽和度)

  13 # 調色板 cool hot rainbow hls spring...

  14 Sns.palplot(sns.color_palette(‘hls’,7))

線性圖:plt.plot(x,y)

x 表示x軸數據點,y 表示y軸數據點

網格線:plt.grid(color='black',axis='both',alpha=0.3)

color顏色;alpha 透明度 ;axis軸,x或y。

坐標界限:plt.axis('auto') 隨著橫縱坐標軸的數據自動設置

 

plt.axis([-15,15,-5,5]) 表示x軸界限是【-15,15】,y軸界限是【-5,5】

取消樣式:plt.axis('off')   

標題:plt.title()

plt.title('this is sun!')

x軸的標記:xlabel() 

plt.xlabel('X',fontsize=20,color='orange')

y軸的標記:ylabel() 

plt.ylabel('f(x)',fontsize=20,color='cyan',rotation=0)   # rotation角度,f(x)旋轉90度

設置圖例: plt.legend()   

註意:畫圖的時候指定好圖例名字才有效,如 label='top'

指定圖例的位置:loc參數

 

plt.legend(loc=0):loc=0代表最適合的位置,電腦自動識別

plt.legend(loc=[0,1]):表示在圖片的左上角,將圖例放在畫布的外面,x或者y的倍數 ,這裡是x的0倍 y的1倍

設置圖片大小(局部的)

plt.figure(figsize=(20,10))

 ,線,顏色的屬性

線 linestyle:(簡寫ls), ①:②-- ③-.④-

寬度 linewidth:(簡寫lw)   

字體 fontsize:(單位px)   

透明度 alpha :百分比         

角度 rotation

點 marker: o(圓點) s(方形) p(五邊形) d(小菱形) 1 2 3 4 8(八邊)'*'

點顏色color:c

點的大小 markersize

點邊緣的寬度 markeredgewidth

點邊緣面的顏色 markeredgecolor

點中間面的顏色 markerfacecolor

1 plt.plot(x,y,label='top',ls=':',lw=3,c='c',marker=1,markersize=100)
2 
3 plt.plot(x,-y,label='bottom',ls='--',lw=2,marker='s',markersize=7,color='#0FF0FFF0')
4 
5 plt.axis('equal')

更換刻度

1 x = np.arange(10)
2 y = x + 10
3 plt.plot(x,y,c='orange',lw=10,marker='o',markersize=100,markerfacecolor='r',markeredgecolor='g',markeredgewidth=10)
4 
5 #第一個參數是坐標的範圍  第二格參數是要替換的字元  映射
6 plt.xticks(np.arange(0,9),list('abcdefghi'),fontsize=20)
7 plt.yticks(np.arange(0,9),list('abcdefghi'),fontsize=20)

plt 中的實體標識 :碰到特殊符號不好列印的時候 如pi(3.14)

 1 # subplot代表的是畫布  
 2 axes = plt.subplot()
 3 
 4 # 畫布中的用axes調用
 5 axes.set_xticks([-pi,-pi/2,0,pi/2,pi])
 6 axes.set_xticklabels(['-$\pi$','-$\pi$/2','0','$\pi$/2','$\pi$'],fontsize=20,color='orange',rotation=30)
 7 
 8 axes.set_yticks([-1,0,1])
 9 axes.set_yticklabels(['min',0,'max'],fontsize=20,color='orange',rotation=30)
10 
11 # 畫布中設置標題
12 axes.set_title('abc')

 

直方圖 plt.hist()

1 # 針對一維數據進行統計的,統計出現次數    
2 a = np.random.randint(0,10,10)   
3 a                    # 得到 array([8, 3, 2, 3, 5, 3, 4, 5, 6, 1])
4 plt.hist(a,bins=20)  # bins 調節直方的寬度
5 
6 # seabron當中的直方圖
7 sns.distplot(a,bins=20,color='r')

 

柱狀圖plt.barh()

描述的是二維數據的 

matplotlib裡面的柱狀圖,縱向的:plt.bar(X,Y)

matplotlib裡面的柱狀圖,橫向的:plt.barh(X,Y)

seabron裡面的柱狀圖(推薦使用),hue匹配條件  

1 sns.barplot(data=titanic,x='sex',y='survived',hue='class')

 

 plt.pie()

 1 plt.figure(figsize=(14,8))
 2 gdp = np.array([2794696,20513000,2689992,13457267,5070626,4029140,2808899])
 3 label=['fr','usa','ind','ch','jp','ge','uk']
 4 
 5 explode = [0,0,0.1,0,0,0,0.2]  # 圖片分離ind uk
 6 # textprops={'fontsize':30}      設置字體大小
 7 plt.pie(gdp,labels=label,textprops={'fontsize':30},explode=explode,colors=sns.color_palette('hls',7))
 9 
10 plt.axis('equal')

 

箱圖plt.boxplot()

主要是檢查數據的分佈,查看異常值

plt.boxplot(data)

使用seabron畫的箱圖

sns.boxplot(data)

 

散佈圖(散點圖)plt.scatter()

主要作用:查看數據的分佈情況  越亂的數據越不利於做機器學習

 1 # 使用sns里的鳶尾花數據集
 2 iris = sns.load_dataset('iris')
 3 
 4 plt.scatter(iris.iloc[:,0],iris.iloc[:,1],c=target,cmap='rainbow') # c=target會自動給每種類別分配顏色的,使用seabron裡面自帶的鳶尾花數據集
 5 
 6 # seabron中的散佈圖
 7 # 1.散步密度圖
 8 sns.jointplot(data=iris,x='sepal_length',y='sepal_width',color='orange',kind='hex')    # kind:{"scatter"|"reg"|"resid"|"kde"|"hex"}散點|帶有回歸的線|帶有回歸的線(考慮到行了)|密度圖(像遙感)|六角形
 9 
10 # 2.回歸散佈圖
11 sns.regplot(data=iris,x='sepal_length',y='sepal_width')  # 擬合曲線   根據花萼的 沒有什麼規律
12 
13 sns.regplot(data=iris,x='petal_length',y='petal_width',) # 根據花瓣的回歸散佈圖,比較有線性規律
14 
15 # 3.線性分類散佈圖
16 sns.lmplot(data=iris,x='petal_length',y='petal_width',hue='species',markers=['o','x','d']) # 每一種的趨勢單獨的預測出;hue='species'條件,根據種類;markers=['o','x','d'] 點的形狀 圓 x 棱形
17 
18 # 4.散佈圖矩陣
19 sns.pairplot(data=iris,hue='species',kind='scatter',diag_kind='auto')   # diag_kind : {'hist', 'kde'},對角線上圖形類型的選擇 hist直方圖 kde 密度圖

 

3D圖形

 1 # 繪製3D圖
 2 from mpl_toolkits.mplot3d.axes3d import Axes3D  # 引入3d庫
 3 fig = plt.figure(figsize=(16,10))
 4 
 5 #實例化Axes3D
 6 axes3d = Axes3D(fig)
 7 
 8 #調用對象scatter3D
 9 axes3d.scatter3D(iris.iloc[:,0],iris.iloc[:,1],iris.iloc[:,2],c=target,s=60,cmap='hot')
10 
11 # 保存
12 plt.savefig('sca.png',dpi=100)

 

 


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

-Advertisement-
Play Games
更多相關文章
  • 本文主要介紹了JVM—GC垃圾回收器,並對其進行了總結。主要包含了Serial收集器、ParNew收集器、Parallel Scavenge收集器、Servial Old收集器、Parallel Old收集器、CMS收集器、G1收集器。 ...
  • 學習Socket時, 想實現一個讀寫分離,能夠實時接收和發送消息的socket,卻一直發送消息出去卻不能列印出來。 客戶端發送消息出去後。 客戶端卻不能列印出消息,客戶端也不能列印出消息。 一直冥思苦想,一直到不到問題所在。 直到 發現 PrintWriter將 write 方法 改為 printl ...
  • 基於SSM開發餐飲業點餐系統 開發環境: Windows操作系統開發工具: MyEclipse+Jdk+Tomcat+MySql資料庫運行效果圖 @ResponseBody @RequestMapping(value = "/checkUsername") public String checkUs ...
  • 本文主要介紹Java—System類和Runtime類的概念及使用。 ...
  • 1.Java中的抽象類 用最簡單的話來說, 一個抽象類就是使用keyword聲明為abstract的 。它可能包含也可能不包含任何抽象方法。JVM將抽象類標識為 不完整類 , 該類 尚未定義其完整行為。聲明一個類 僅強制執行一件事:您不能創建此類的實例,僅此而已。那麼,為什麼還要費心創建一個根本無法 ...
  • 本文源碼: "GitHub·點這裡" || "GitEE·點這裡" 一、基本類型 1、基本類型 不使用New創建,聲明一個非引用傳遞的變數,且變數的值直接置於堆棧中,大小不隨運行環境變化,效率更高。使用new創建的引用對象存儲在堆中。 2、基本信息 基本類型包括如下幾種:byte、short、int ...
  • 有天上飛的概念,就要有落地的實現 概念十遍不如代碼一遍,朋友,希望你把文中所有的代碼案例都敲一遍 先贊後看,養成習慣 SpringBoot 圖文教程系列文章目錄 1. "SpringBoot圖文教程1「概念+案例 思維導圖」「基礎篇上」" 2. "SpringBoot圖文教程2—日誌的使用「logb ...
  • 爬蟲 什麼是爬蟲? 通過編寫代碼,模擬瀏覽器發送請求,讓其去網路上抓去數據的過程。 爬蟲分類? 通用爬蟲 抓取整張網頁的全部內容 聚焦爬蟲 抓去一張頁面的部分內容 通用爬蟲和聚焦爬蟲的關聯: 聚焦是建立在通用爬蟲的基礎上 增量式 監測網站數據的更新情況,以便將最新的數據進行爬取。 reqeusts基 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...