cmap参数 plt_Matplotlib入门-5-plt.scatter( )绘制散点图
在本篇文章中,我們將接觸一個(gè)新的繪圖函數(shù)plt.scatter( ),它用于散點(diǎn)圖的繪制。從前幾篇文章中,我們已經(jīng)深知,學(xué)習(xí)Matplotlib繪圖其實(shí)就是學(xué)習(xí)繪圖函數(shù)中的參數(shù)!將參數(shù)活學(xué)活用,不同的參數(shù)搭配會產(chǎn)生不同的化學(xué)效應(yīng)!
認(rèn)真學(xué)習(xí)完本章內(nèi)容,這種圖信手拈來接下來,我們開始學(xué)習(xí)plt.scatter( )中各參數(shù)的作用以及參數(shù)值的傳入
話不多說,直接上干貨
如何查看一個(gè)函數(shù)有哪些參數(shù)?
第一步:以pycharm為例,在代碼中,光標(biāo)移動到函數(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 → 散點(diǎn)的坐標(biāo)
- s → 散點(diǎn)的面積
- c → 散點(diǎn)的顏色(默認(rèn)值為藍(lán)色,'b',其余顏色同plt.plot( ))
- marker → 散點(diǎn)樣式(默認(rèn)值為實(shí)心圓,'o',其余樣式同plt.plot( ))
- alpha → 散點(diǎn)透明度([0, 1]之間的數(shù),0表示完全透明,1則表示完全不透明)
- linewidths →散點(diǎn)的邊緣線寬
- edgecolors → 散點(diǎn)的邊緣顏色
這里為了生成點(diǎn)的坐標(biāo),用到了numpy中的隨機(jī)數(shù)生成器 np.random.rand(d0, d1, ..., dn)
- rand( )函數(shù)根據(jù)給定維度生成[0,1)之間的隨機(jī)數(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維隨機(jī)數(shù)
有這一利器,我們的隨機(jī)散點(diǎn)坐標(biāo)就有了著落,上代碼上圖
import matplotlib.pyplot as plt import numpy as npn = 10 # 用于生成十個(gè)點(diǎn) x = np.random.rand(n) y = np.random.rand(n)plt.scatter(x, y)plt.show()通過上面給出的基本參數(shù)進(jìn)行優(yōu)化,代碼及圖如下
import matplotlib.pyplot as plt import numpy as npn = 10 # 用于生成十個(gè)點(diǎn) 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)化前后兩幅圖散點(diǎn)的位置不一樣了!?~
這就對了,因?yàn)檫@些點(diǎn)是由隨機(jī)數(shù)生成器np.random.rand( )產(chǎn)生的,所以每次都不一樣
(2)高級參數(shù)講解
- cmap → 指的是matplotlib.colors.Colormap,相當(dāng)于多個(gè)調(diào)色盤的合集
- norm、vmin、vmax → 散點(diǎn)顏色亮度設(shè)置
上代碼上圖,進(jìn)一步解釋
為了演示,這里要用到一點(diǎn)偽隨機(jī)數(shù)生成方法,不做過多解釋,不理解的請移步
【數(shù)據(jù)處理】numpy.random.RandomState的用法
import matplotlib.pyplot as plt import numpy as nprng = np.random.RandomState(0)x = rng.randn(50) # 隨機(jī)產(chǎn)生50個(gè)X軸坐標(biāo) y = rng.randn(50) # 隨機(jī)產(chǎn)生50個(gè)Y軸坐標(biāo)colors = rng.rand(50) # 隨機(jī)產(chǎn)生50個(gè)用于顏色映射的數(shù)值 sizes = 700 * rng.rand(50) # 隨機(jī)產(chǎn)生50個(gè)用于改變散點(diǎn)面積的數(shù)值plt.scatter(x, y, c=colors, s=sizes, alpha=0.3, cmap='viridis')plt.show()這里從cmap中選取了一個(gè)叫做'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) # 隨機(jī)產(chǎn)生50個(gè)X軸坐標(biāo) y = rng.randn(50) # 隨機(jī)產(chǎn)生50個(gè)Y軸坐標(biāo)colors = rng.rand(50) # 隨機(jī)產(chǎn)生50個(gè)用于顏色映射的數(shù)值 sizes = 700 * rng.rand(50) # 隨機(jī)產(chǎn)生50個(gè)用于改變散點(diǎn)面積的數(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ù)映射到可視化界面上,因此,散點(diǎn)大小,形狀,顏色等等均可以表示數(shù)據(jù)集中的某維屬性,好好理解一下!
好了,今天到此為止,希望大家喜歡,動動小手,關(guān)注點(diǎn)贊~
總結(jié)
以上是生活随笔為你收集整理的cmap参数 plt_Matplotlib入门-5-plt.scatter( )绘制散点图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ip访问 webstorem_常见问题-
- 下一篇: 物理搬砖问题_搬砖姿势:风法