日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python 数据分析三剑客之 Matplotlib(五):散点图的绘制

發布時間:2023/12/10 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python 数据分析三剑客之 Matplotlib(五):散点图的绘制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

CSDN 課程推薦:《Python 數據分析與挖掘》,講師劉順祥,浙江工商大學統計學碩士,數據分析師,曾擔任唯品會大數據部擔任數據分析師一職,負責支付環節的數據分析業務。曾與聯想、亨氏、網魚網咖等企業合作多個企業級項目。


Matplotlib 系列文章:

  • Python 數據分析三劍客之 Matplotlib(一):初識 Matplotlib 與其 matplotibrc 配置文件
  • Python 數據分析三劍客之 Matplotlib(二):文本描述 / 中文支持 / 畫布 / 網格等基本圖像屬性
  • Python 數據分析三劍客之 Matplotlib(三):圖例 / LaTeX / 刻度 / 子圖 / 補丁等基本圖像屬性
  • Python 數據分析三劍客之 Matplotlib(四):線性圖的繪制
  • Python 數據分析三劍客之 Matplotlib(五):散點圖的繪制
  • Python 數據分析三劍客之 Matplotlib(六):直方圖 / 柱狀圖 / 條形圖的繪制
  • Python 數據分析三劍客之 Matplotlib(七):餅狀圖的繪制
  • Python 數據分析三劍客之 Matplotlib(八):等高線 / 等值線圖的繪制
  • Python 數據分析三劍客之 Matplotlib(九):極區圖 / 極坐標圖 / 雷達圖的繪制
  • Python 數據分析三劍客之 Matplotlib(十):3D 圖的繪制
  • Python 數據分析三劍客之 Matplotlib(十一):最熱門最常用的 50 個圖表【譯文】

另有 NumPy、Pandas 系列文章已更新完畢,歡迎關注:

  • NumPy 系列文章:https://itrhx.blog.csdn.net/category_9780393.html
  • Pandas 系列文章:https://itrhx.blog.csdn.net/category_9780397.html

推薦學習資料與網站(博主參與部分文檔翻譯):

  • NumPy 官方中文網:https://www.numpy.org.cn/
  • Pandas 官方中文網:https://www.pypandas.cn/
  • Matplotlib 官方中文網:https://www.matplotlib.org.cn/
  • NumPy、Matplotlib、Pandas 速查表:https://github.com/TRHX/Python-quick-reference-table

文章目錄

    • 【1x00】方法描述
    • 【2x00】簡單示例
    • 【3x00】多條數據
    • 【4x00】設置顏色 / 樣式 / 圖例
    • 【5x00】指定位置顯示文本注釋
    • 【6x00】隨機數據散點圖
    • 【7x00】隨機顏色與色條
    • 【8x00】不同圖像之間的層級調整
    • 【9x00】框選部分數據


這里是一段防爬蟲文本,請讀者忽略。 本文原創首發于 CSDN,作者 TRHX。 博客首頁:https://itrhx.blog.csdn.net/ 本文鏈接:https://itrhx.blog.csdn.net/article/details/105914929 未經授權,禁止轉載!惡意轉載,后果自負!尊重原創,遠離剽竊!

【1x00】方法描述

matplotlib.pyplot.scatter() 方法可用于繪制散點圖。

本文用到的其他圖像屬性可參考前面的兩篇文章:

《Python 數據分析三劍客之 Matplotlib(二):文本描述 / 中文支持 / 畫布 / 網格等基本圖像屬性》
《Python 數據分析三劍客之 Matplotlib(三):圖例 / LaTeX / 刻度 / 子圖等基本圖像屬性》

基本語法:matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, alpha=None, linewidths=None, edgecolors=None, \*\*kwargs)

參數描述
x,y數據位置,標量或類似數組的形式
s標記的大小,以磅為單位,默認 rcParams['lines.markersize'] ** 2,即 6**2=36
color / c標記的顏色,可以是單個顏色或者一個顏色列表
支持英文顏色名稱及其簡寫、十六進制顏色碼等,更多顏色示例參見官網 Color Demo
marker標記的樣式,默認為 rcParams["scatter.marker"] = 'o',更多樣式參見表一
cmap將浮點數映射成顏色的顏色映射表,即一個 Colormap 實例或注冊的顏色表名,僅當 c 是浮點數數組時才使用 cmap
alpha標記的透明度,float 類型,取值范圍:[0, 1],默認為 1.0,即不透明
linewidths標記邊緣的線寬,默認為 rcParams["lines.linewidth"] = 1.5
edgecolors標記邊緣的顏色,可以是單個顏色或者一個顏色列表
支持英文顏色名稱及其簡寫、十六進制顏色碼等,更多顏色示例參見官網 Color Demo
表一:marker 標記的樣式
標記描述
"."
","像素點
"o"圓圈
"v"倒三角
"^"正三角
"<"左三角
">"右三角
"1"倒三叉星
"2"正三叉星(類似奔馳車標形狀)
"3"左三叉星
"4"右三叉星
"8"八邊形
"s"正方形
"p"五邊形
"P"填充的加號(粗加號)
"+"加號
"*"星形
"h"六邊形(底部是角)
"H"六邊形(底部是邊)
"x"x 號
"X"填充的 x 號(粗 x 號)
"D"粗菱形(對角線相等)
"d"細菱形(對角線不等)
"|"垂直線
"_"水平線
0水平線靠左
1水平線靠右
2垂直線靠上
3垂直線靠下
4左三角(比 "<" 更細)
5右三角(比 ">" 更細)
6正三角(比 "^" 更細)
7倒三角(比 "v" 更細)
8左三角(比 "<" 更細,靠左顯示)
9右三角(比 ">" 更細,靠右顯示)
10正三角(比 "^" 更細,靠上顯示)
11倒三角(比 "v" 更細,靠下顯示)
"None" / " " / ""無樣式
'$...$'支持 LaTeX 數學公式,表達式用美元符號包圍起來

【2x00】簡單示例

import numpy as np import matplotlib.pyplot as pltx = np.arange(0, 10, 1) y = np.array([3, 8, 1, 5, 7, 2, 3, 4, 5, 7]) plt.scatter(x, y)plt.show()

【3x00】多條數據

繪制多條數據,設置不同數據,然后多次調用 plt.scatter() 函數即可,不同數據的線條顏色會不同,系統隨機,可單獨指定不同顏色。

import numpy as np import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']x = np.arange(-2*np.pi, 2*np.pi, 1) y1 = np.sin(3*x)/x y2 = np.sin(2*x)/x y3 = np.sin(1*x)/x plt.title('多數據散點圖示例') plt.xlabel('x 軸') plt.ylabel('y 軸')plt.scatter(x, y1) plt.scatter(x, y2) plt.scatter(x, y3)plt.show()

【4x00】設置顏色 / 樣式 / 圖例

import numpy as np import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']x = np.arange(-2*np.pi, 2*np.pi, 1) y1 = np.sin(3*x)/x y2 = np.sin(2*x)/x y3 = np.sin(1*x)/x plt.title('散點圖自定義樣式示例') plt.xlabel('x 軸') plt.ylabel('y 軸')plt.scatter(x, y1, color='g', s=30, label='(x, y1)') # 默認綠色樣式 plt.scatter(x, y2, color='r', s=40, marker='d', label='(x, y2)') # 紅色菱形 plt.scatter(x, y3, color='b', s=50, marker='2', label='(x, y3)') # 藍色正三叉星plt.legend(framealpha=0) # 顯示圖例,設置為全透明plt.show()

【5x00】指定位置顯示文本注釋

matplotlib.pyplot.annotate() 方法可以在指定位置顯示文本注釋,參數解釋常見前文:
《Python 數據分析三劍客之 Matplotlib(二):文本描述 / 中文支持 / 畫布 / 網格等基本圖像屬性》

應用舉例:

import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']x = [0.13, 0.22, 0.39, 0.59, 0.68, 0.74, 0.93] y = [0.75, 0.34, 0.44, 0.52, 0.80, 0.25, 0.55]plt.title('散點圖添加文本注釋示例') plt.xlabel('x 軸') plt.ylabel('y 軸') plt.xlim([0, 1]) # 設置 x 軸刻度的范圍 plt.ylim([0, 1]) # 設置 y 軸刻度的范圍plt.scatter(x, y, marker='o', s=50) for m, n in zip(x, y):plt.annotate('(%s,%s)' % (m, n),xy=(m, n),xytext=(0, -10),textcoords='offset points',ha='center', # 點在注釋文本的中心va='top') # 點在注釋文本的上方plt.show()


這里是一段防爬蟲文本,請讀者忽略。 本文原創首發于 CSDN,作者 TRHX。 博客首頁:https://itrhx.blog.csdn.net/ 本文鏈接:https://itrhx.blog.csdn.net/article/details/105914929 未經授權,禁止轉載!惡意轉載,后果自負!尊重原創,遠離剽竊!

【6x00】隨機數據散點圖

隨機數據可以用 numpy 的 random 模塊來實現。

numpy.random.rand(d0, d1, …, dn):根據給定維度生成 [0,1) 之間的數據。

numpy.random.randn(d0, d1, …, dn) :返回一個或一組具有標準正態分布的樣本。

numpy.random.randint(low, high, size):返回隨機整數,范圍區間為 [low,high),size 為數組維度大小

應用舉例:

import numpy as np import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']N = 1000 x = np.random.randn(N) y = np.random.randn(N)plt.title('散點圖隨機數據示例') plt.xlabel('x 軸') plt.ylabel('y 軸') plt.scatter(x, y, alpha=0.5)plt.show()

【7x00】隨機顏色與色條

import numpy as np import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']N = 1000 x = np.random.randn(N) y = np.random.randn(N)color = np.random.rand(N) size = np.random.rand(N) * 1000plt.figure(figsize=(8.4, 5.8)) # 設置畫布大小 840x580 plt.title('散點圖隨機大小顏色示例') plt.xlabel('x 軸') plt.ylabel('y 軸') plt.scatter(x, y, c=color, s=size, alpha=0.5)plt.show()

可以用 pyplot.colorbar() 方法繪制顏色對照條。

基本語法:matplotlib.pyplot.colorbar([mappable=None, cax=None, ax=None, **kw])

部分參數解釋如下表,其他參數,如長度,寬度等請參考官方文檔。

參數描述
mappable要設置色條的圖像對象,該參數對于 Figure.colorbar 方法是必需的,但對于 pyplot.colorbar 函數是可選的
cax可選項,要繪制色條的軸
ax可選項,設置色條的顯示位置,通常在一個畫布上有多個子圖時使用
**kw可選項,其他關鍵字參數,參考官方文檔
import numpy as np import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']N = 1000 x = np.random.randn(N) y = np.random.randn(N)color = np.random.rand(N) size = np.random.rand(N) * 1000plt.figure(figsize=(8.4, 5.8)) plt.title('散點圖顏色對照條示例') plt.xlabel('x 軸') plt.ylabel('y 軸') plt.scatter(x, y, c=color, s=size, alpha=0.5) plt.colorbar()plt.show()

【8x00】不同圖像之間的層級調整

zorder 參數用于設置不同圖像之間的層級關系,數字越大,所處的層級越大,即顯示越靠上。

未設置 zorder 參數前:

import numpy as np import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']x1 = np.arange(-2*np.pi, 2*np.pi, 0.01) y1 = np.sin(3*x1)/x1 x2 = np.arange(-2*np.pi, 2*np.pi, 1) y2 = np.sin(3*x2)/x2plt.title('不同圖像之間層級調整示例') plt.xlabel('x 軸') plt.ylabel('y 軸')plt.plot(x1, y1, c='b', linewidth=3.5, label='線性圖') plt.scatter(x2, y2, c='r', s=40, label='散點圖') plt.legend()plt.show()

設置 zorder 參數后:

import numpy as np import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']x1 = np.arange(-2*np.pi, 2*np.pi, 0.01) y1 = np.sin(3*x1)/x1 x2 = np.arange(-2*np.pi, 2*np.pi, 1) y2 = np.sin(3*x2)/x2plt.title('不同圖像之間層級調整示例') plt.xlabel('x 軸') plt.ylabel('y 軸')plt.plot(x1, y1, zorder=1, c='b', linewidth=3.5, label='線性圖') plt.scatter(x2, y2, zorder=2, c='r', s=40, label='散點圖') plt.legend()plt.show()

【9x00】框選部分數據

有時候我們希望能夠框選一部分數據來強調其重要性,matplotlib.patches.Polygon() 方法的作用是生成不規則的多邊形補丁,matplotlib.patches 還有另外的方法可以生成矩形、圓形等其他圖形,具體參見前面的文章《Python 數據分析三劍客之 Matplotlib(三):圖例 / LaTeX / 刻度 / 子圖 / 補丁等基本圖像屬性》,生成補丁之后,通過 axes.add_patch() 方法將其添加到繪圖區(axes)即可。

import numpy as np import matplotlib.pyplot as plt import matplotlib.patches as mpathesplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']plt.figure(figsize=(8.4, 5.8))x1 = np.arange(0, 1000, 10) y1 = np.random.randint(0, 1000, 100) x2 = np.arange(0, 500, 10) y2 = np.random.randint(200, 800, 50) x3 = np.random.randint(50, 800, 80) y3 = np.random.randint(50, 800, 80) x4 = np.array([0, 100, 300, 400, 350, 500, 450, 367, 420, 490]) y4 = np.array([267, 800, 453, 500, 600, 420, 380, 503, 390, 600])plt.title('散點圖數據框選示例', fontsize=15) plt.xlabel('x 軸', fontsize=15) plt.ylabel('y 軸', fontsize=15) plt.scatter(x1, y1, c='r', s=50, alpha=0.7, label='RED') plt.scatter(x2, y2, c='b', s=100, alpha=0.7, label='BLUE') plt.scatter(x3, y3, c='g', s=150, alpha=0.7, label='GREEN') plt.scatter(x4, y4, c='y', s=250, alpha=0.7, label='YELLOW') plt.legend(loc='upper right', borderpad=1, edgecolor='k', framealpha=1, labelspacing=1)Polygon_point = [[100, 800], [0, 267], [500, 420], [490, 600]] # 多邊形補丁的頂點坐標 polygon = mpathes.Polygon(Polygon_point, color='#FF69B4', alpha=0.3) # 繪制補丁,框選部分數據 ax = plt.gca() # 獲取當前繪圖區(gca = Get Current Axes) ax.add_patch(polygon) # 將補丁添加到當前繪圖區plt.show()


這里是一段防爬蟲文本,請讀者忽略。 本文原創首發于 CSDN,作者 TRHX。 博客首頁:https://itrhx.blog.csdn.net/ 本文鏈接:https://itrhx.blog.csdn.net/article/details/105914929 未經授權,禁止轉載!惡意轉載,后果自負!尊重原創,遠離剽竊!

總結

以上是生活随笔為你收集整理的Python 数据分析三剑客之 Matplotlib(五):散点图的绘制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。