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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

cmap参数 plt_Matplotlib入门-5-plt.scatter( )绘制散点图

發(fā)布時間:2024/1/23 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cmap参数 plt_Matplotlib入门-5-plt.scatter( )绘制散点图 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在本篇文章中,我們將接觸一個新的繪圖函數(shù)plt.scatter( ),它用于散點圖的繪制。從前幾篇文章中,我們已經(jīng)深知,學(xué)習(xí)Matplotlib繪圖其實就是學(xué)習(xí)繪圖函數(shù)中的參數(shù)!將參數(shù)活學(xué)活用,不同的參數(shù)搭配會產(chǎn)生不同的化學(xué)效應(yīng)!

認真學(xué)習(xí)完本章內(nèi)容,這種圖信手拈來

接下來,我們開始學(xué)習(xí)plt.scatter( )中各參數(shù)的作用以及參數(shù)值的傳入

話不多說,直接上干貨


如何查看一個函數(shù)有哪些參數(shù)?

第一步:以pycharm為例,在代碼中,光標移動到函數(shù)名上,雙擊函數(shù)名(這里以sactter為例),變?yōu)橄聢D顯示方式

第二步:Ctrl+Q,如下圖所示,你就能知道該函數(shù)有哪些參數(shù)了

可以看到,在scatter( )中,其參數(shù)如下:

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, hold=None, data=None, **kwargs)

下面,我將參數(shù)分為兩大類,分開講解


(1)基本參數(shù)講解

  • x, y → 散點的坐標
  • s → 散點的面積
  • c → 散點的顏色(默認值為藍色,'b',其余顏色同plt.plot( ))
  • marker → 散點樣式(默認值為實心圓,'o',其余樣式同plt.plot( ))
  • alpha → 散點透明度([0, 1]之間的數(shù),0表示完全透明,1則表示完全不透明)
  • linewidths →散點的邊緣線寬
  • edgecolors → 散點的邊緣顏色

這里為了生成點的坐標,用到了numpy中的隨機數(shù)生成器 np.random.rand(d0, d1, ..., dn)

  • rand( )函數(shù)根據(jù)給定維度生成[0,1)之間的隨機數(shù)據(jù)(包含0,不包含1)
  • dn表示生成數(shù)據(jù)的維度
  • 返回值為指定維度的array

上代碼直觀感受
np.random.rand(4)生成了一維數(shù)據(jù),如下[0.90906869 0.90382675 0.12846739 0.82934525]
np.random.rand(4,2)生成了二維數(shù)據(jù),如下[[0.06704094 0.39773471] [0.66768398 0.22644566] [0.33790806 0.04170456] [0.68308087 0.85099505]]

以此類推 np.random.rand(d0, d1, ..., dn) 可以生成n維隨機數(shù)

有這一利器,我們的隨機散點坐標就有了著落,上代碼上圖

import matplotlib.pyplot as plt import numpy as npn = 10 # 用于生成十個點 x = np.random.rand(n) y = np.random.rand(n)plt.scatter(x, y)plt.show()

通過上面給出的基本參數(shù)進行優(yōu)化,代碼及圖如下

import matplotlib.pyplot as plt import numpy as npn = 10 # 用于生成十個點 x = np.random.rand(n) y = np.random.rand(n)plt.scatter(x, y, s=100, c='r', marker='*',alpha=0.65)plt.show()

有些明眼人一看,怎么優(yōu)化前后兩幅圖散點的位置不一樣了!?~

這就對了,因為這些點是由隨機數(shù)生成器np.random.rand( )產(chǎn)生的,所以每次都不一樣

(2)高級參數(shù)講解

  • cmap → 指的是matplotlib.colors.Colormap,相當于多個調(diào)色盤的合集
  • norm、vmin、vmax → 散點顏色亮度設(shè)置

上代碼上圖,進一步解釋

為了演示,這里要用到一點偽隨機數(shù)生成方法,不做過多解釋,不理解的請移步

【數(shù)據(jù)處理】numpy.random.RandomState的用法

import matplotlib.pyplot as plt import numpy as nprng = np.random.RandomState(0)x = rng.randn(50) # 隨機產(chǎn)生50個X軸坐標 y = rng.randn(50) # 隨機產(chǎn)生50個Y軸坐標colors = rng.rand(50) # 隨機產(chǎn)生50個用于顏色映射的數(shù)值 sizes = 700 * rng.rand(50) # 隨機產(chǎn)生50個用于改變散點面積的數(shù)值plt.scatter(x, y, c=colors, s=sizes, alpha=0.3, cmap='viridis')plt.show()

這里從cmap中選取了一個叫做'viridis'的調(diào)色盤,其作用是,將參數(shù)c中獲取到的數(shù)值,映射到“色盤”中已經(jīng)對應(yīng)好的顏色上,多讀兩遍,好好理解!

并且上圖中從“色盤”viridis中獲取到的顏色,可以通過plt.colorbar( )顯示為顏色條(與熱力圖同理)。

代碼和可視化結(jié)果圖如下所示

import matplotlib.pyplot as plt import numpy as nprng = np.random.RandomState(0)x = rng.randn(50) # 隨機產(chǎn)生50個X軸坐標 y = rng.randn(50) # 隨機產(chǎn)生50個Y軸坐標colors = rng.rand(50) # 隨機產(chǎn)生50個用于顏色映射的數(shù)值 sizes = 700 * rng.rand(50) # 隨機產(chǎn)生50個用于改變散點面積的數(shù)值plt.scatter(x, y, c=colors, s=sizes, alpha=0.3, cmap='viridis')plt.colorbar() # 顯示顏色條plt.show()

從上圖上,可以很明顯的看出:

顏色映射的這維屬性數(shù)據(jù)(顏色條表示),其值主要集中于[0.4, 0.8]之間

為了更好的觀察這維屬性數(shù)據(jù),可以重新設(shè)置顏色條的映射范圍

需要用到colors.Normalize( ),使用方法如下:

class matplotlib.colors.Normalize(vmin=None, vmax=None)

參數(shù) vmin、vmax 分別為要設(shè)置的數(shù)據(jù)范圍的最小值和最大值(注意:設(shè)置之后,原來大于vmax的值被“拉低”成vmax;原來小于vmin的值被“拉高”成vmin)

代碼和可視化結(jié)果圖如下所示

import matplotlib.pyplot as plt import numpy as np from matplotlib import colors # 注意!為了調(diào)整“色盤”,需要導(dǎo)入colorsrng = np.random.RandomState(0) x = rng.randn(50) y = rng.randn(50) color = rng.rand(50) sizes = 700 * rng.rand(50)changecolor = colors.Normalize(vmin=0.4, vmax=0.8)plt.scatter(x, y, c=color, s=sizes, alpha=0.3, cmap='viridis',norm=changecolor)plt.colorbar() plt.show()


對于數(shù)據(jù)可視化而言,我們要用多種方式方法,將數(shù)據(jù)映射到可視化界面上,因此,散點大小,形狀,顏色等等均可以表示數(shù)據(jù)集中的某維屬性,好好理解一下!


好了,今天到此為止,希望大家喜歡,動動小手,關(guān)注點贊~

總結(jié)

以上是生活随笔為你收集整理的cmap参数 plt_Matplotlib入门-5-plt.scatter( )绘制散点图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。