Matplotlib顏色條的配置_Python數據分析與可視化

Matplotlib顏色條配置

  • 基本顏色
  • 顏色條
  • 選擇配色方案
  • 顏色條刻度的限制與擴展功能的設置
  • 離散型顏色條

基本顏色

Matplotlib提供了8種指定顏色的方法:

  • 在[0,1]中的浮點值的RGB或RGBA元組(例如 (0.1, 0.2, 0.5) 或(0.1, 0.2, 0.5, 0.3))。RGBA是紅色,綠色,藍色,Alpha的縮寫;

  • 十六進制RGB或RGBA字符串(例如: #0F0F0F 或者 #0F0F0F0F);

  • [0, 1]中浮點值的字符串表示,包括灰度級(例如,0.5);

  • 單字母字符串,例如這些其中之一:{b, g,r, c,m, y, k, w};

  • 一個 X11/CSS4(html)顏色名稱,例如:blue;

  • 來自xkcd的顏色調研的名稱,前綴為 xkcd:(例如:xkcd:sky blue);

  • 一個 Cn 顏色規范,即C 后跟一個數字,這是默認屬性循環的索引(matplotlib.rcParams[axes.prop_cycle]); 索引在藝術家對象創建時發生,如果循環不包括顏色,則默認為黑色;

  • 其中一個 {tab:blue,tab:orange,tab:green,tab:red, tab:purple,tab:brown,tab:pink,tab:gray,tab:olive, tab:cyan},它們是tab10分類調色板中的Tableau顏色(這是默認的顏色循環)。

代碼示例:

t = np.linspace(0.0, 2.0, 201)
s = np.sin(2 * np.pi * t)
fig, ax = plt.subplots(facecolor=(.18, .31, .31))#RGB 元組
ax.set_facecolor('#eafff5')#hex字符串
ax.set_title('Voltage vs. time chart', color='0.7')#灰度字符串
ax.plot(t, s, 'xkcd:crimson')
ax.plot(t, .7*s, color='C4', linestyle='--')#CN顏色選擇
ax.tick_params(labelcolor='tab:orange')

效果圖
在這里插入圖片描述

顏色條

顏色的設置應該是在matploblib使用最頻繁的配置之一了。matplotlib通過cmap參數為圖形設置顏色條的配色方案:

x = np.linspace(0, 10, 1000)
I = np.sin(x) * np.cos(x[:, np.newaxis])
plt.imshow(I, cmap='gray')#采用灰度配色的圖形

效果圖
在這里插入圖片描述

matplotlib所有可用的配色方案都在plt.cm命名空間中。在jupyter里通過Tab鍵就可以查看所有的配置方案:plt.cm<TAB>

選擇配色方案

有了這么多能夠選擇的配色方案只是第一步,重要的是如何確定用那種方案。一般情況下我們只需要關注三種不同的配色方案:

  • 順序配色方案,由一組連續的顏色構成的配色方案(例如binaryviridis);

  • 互逆配色方案,通常由兩種互補的顏色構成,表示正反兩種含義(例如RdBuPuOr);

  • 定性配色方案,隨機順序的一組顏色(例如rainbowjet)。

jet是一種定性配色方案,定性配色方案在對定性數據進行可視化時的選擇空間非常有限。隨著圖形亮度的提高,經常會出現顏色無法區分的問題。接下來將演示幾個常用的配色方案。

這里通過把jet轉換為黑白的灰度圖看看:

from matplotlib.colors import LinearSegmentedColormap
import matplotlib.pyplot as plt
import numpy as np
def grayscale_cmap(cmap):"""為配色方案顯示灰度圖"""cmap = plt.cm.get_cmap(cmap)colors = cmap(np.arange(cmap.N))# 將RGBA色轉換為不同亮度的灰度值# 參考鏈接http://alienryderflex.com/hsp.htmlRGB_weight = [0.299, 0.587, 0.114]luminance = np.sqrt(np.dot(colors[:, :3] ** 2, RGB_weight))colors[:, :3] = luminance[:, np.newaxis]return LinearSegmentedColormap.from_list(cmap.name + "_gray", colors, cmap.N)
def view_colormap(cmap):"""用等價的灰度圖表示配色方案"""cmap = plt.cm.get_cmap(cmap)colors = cmap(np.arange(cmap.N))cmap = grayscale_cmap(cmap)grayscale = cmap(np.arange(cmap.N))fig, ax = plt.subplots(2, figsize=(6, 2),subplot_kw=dict(xticks=[], yticks=[]))ax[0].imshow([colors], extent=[0, 10, 0, 1])ax[1].imshow([grayscale], extent=[0, 10, 0, 1])
view_colormap('jet')
plt.show()

效果圖
在這里插入圖片描述

從上圖我們觀察灰度圖里比較亮的那部分條紋。這些亮度變化不均勻的條紋在彩色圖中對應某一段彩色區間,由于色彩太接近容易突顯出數據集中不重要的部分,導致眼睛無法識別重點。更好的配色方案是viridis,它采用了精心設計的亮度漸變方式,這樣不僅便于視覺觀察,而且更清晰:

view_colormap('viridis')
在這里插入圖片描述

還可以使用cubehelix實現彩虹效果,cubehelix配色方案可以可視化連續的數值:

view_colormap('cubehelix')
在這里插入圖片描述

還有一種可以用兩種顏色表示正反兩種含義的方案,實現函數為RdBu:

view_colormap('RdBu')
在這里插入圖片描述

顏色條刻度的限制與擴展功能的設置

Matplotlib提供了豐富的顏色條配置功能。由于可以將顏色條本身僅看作是一個plt.Axes實例,因此前面所學的所有關于坐標軸和刻度值的格式配置技巧都可以派上用場。顏色條有一些有趣的特性。

例如,我們可以縮短顏色取值的上下限,對于超出上下限的數據,通過extend參數用三角箭頭表示比上限大的數或者比下限小的數。下面展示一張噪點圖:

x = np.linspace(0, 10, 1000)
I = np.sin(x) * np.cos(x[:, np.newaxis])
speckles = (np.random.random(I.shape) < 0.01)
I[speckles] = np.random.normal(0, 3, np.count_nonzero(speckles))
plt.figure(figsize=(10, 3.5))
plt.subplot(1, 2, 1)
plt.imshow(I, cmap='RdBu')
plt.colorbar()
plt.subplot(1, 2, 2)
plt.imshow(I, cmap='RdBu')
plt.colorbar(extend='both')
plt.clim(-1, 1)

效果圖
在這里插入圖片描述

左邊的圖是用默認的顏色條刻度限制實現的效果,噪點的范圍覆蓋掉了我們感興趣的數據。而右邊的圖形設置了顏色條的刻度上下限,并在上下限之外增加了擴展功能。

離散型顏色條

雖然大多數顏色條默認都是連續的,但有的時候你可能也需要表示離散數據。最簡單的做法就是使用plt.cm.get_cmap()函數,將適當的配色方案的名稱以及需要的區間數量傳進去即可:

x = np.linspace(0, 10, 1000)
I = np.sin(x) * np.cos(x[:, np.newaxis])
plt.imshow(I, cmap=plt.cm.get_cmap('Blues', 6))
plt.colorbar()
plt.clim(-1, 1);

效果圖
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/162002.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/162002.shtml
英文地址,請注明出處:http://en.pswp.cn/news/162002.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C語言中文網 - Shell腳本 - 9

第1章 Shell基礎(開胃菜) 9. Shell修改命令提示符 Shell 通過PS1和PS2這兩個環境變量來控制提示符的格式,修改PS1和PS2的值就能修改命令提示符的格式。 PS1 控制最外層的命令提示符格式。 PS2 控制第二層的命令提示符格式。 在修改 PS1 和 PS2 之前,我們先用 echo 命令輸出…

contos7中mongodb數據庫無法備份與還原,數據庫工具的安裝

由于之前數據庫沒有卸載干凈&#xff0c;導致直接用sudo yum install -y mongodb-org-tools命令無法直接安裝&#xff0c;只能選擇手動安裝了。 先去官網找到mongo-tool工具 MongoDB Database Tools Downloads | MongoDB 然后復制要下載的版本的地址。 然后直接用wget來下載 …

【每日OJ —— 622. 設計循環隊列】

每日OJ —— 622. 設計循環隊列 1.題目&#xff1a;622. 設計循環隊列2.解法2.1.解法講解2.1.1.算法講解2.1.2.代碼實現2.1.3.提交通過展示 1.題目&#xff1a;622. 設計循環隊列 2.解法 1.本題有很多解法&#xff1a;可以使用數組&#xff0c;單鏈表&#xff0c;雙鏈表&#x…

2023亞太杯數學建模賽題人工精準翻譯

大家好&#xff0c;亞太杯今天早上6點已經開賽啦&#xff0c;然后我在這里給大家帶來賽題的精準人工翻譯&#xff0c;防止大家直接用軟件翻譯導致某些地方亂碼或者翻譯不精準&#xff0c;這會導致后續做題過程出現很大偏差。 注意&#xff0c;以下翻譯均免費發放word形式的哈&…

【精選】CSS入門必看知識點大合集

CSS簡介 CSS概念 CSS&#xff08;Cascading Style Sheets&#xff09;層疊樣式表&#xff0c;又叫級聯樣式表&#xff0c;簡稱樣式表 CSS文件后綴名為.css CSS用于HTML文檔中元素樣式的定義 為什么需要CSS 使用css的唯一目的就是讓網頁具有美觀一致的頁面 語法 CSS 規則…

DB2—03(DB2中常見基礎操作)

DB2—03&#xff08;DB2中常見基礎操作&#xff09; 1. 前言1.1 oracle和mysql相關 2. db2中的"dual"2.1 SYSIBM.SYSDUMMY12.2 使用VALUES2.3 SYSIBM.SYSDUMMY1 "變" dual 3. db2中常用函數3.1 nvl()、value()、COALESCE()3.2 NULLIF() 函數3.3 LISTAGG() …

論文《Unsupervised Dialog Structure Learning》筆記:詳解DD-VRNN

D-VRNN模型和DD-VRNN模型 總體架構 離散-可變循環變分自編碼器&#xff08;D-VRNN&#xff09;和直接-離散-可變循環變分自編碼器&#xff08;DD-VRNN&#xff09;概述。D-VRNN和DD-VRNN使用不同的先驗分布來建模 z t z_t zt?之間的轉換&#xff0c;如紅色實線所示。 x t x_t…

Rust錯誤處理:Result

文章目錄 簡介錯誤匹配 Rust基礎教程&#xff1a; 初步? 所有權? 結構體和枚舉類? 函數進階? 泛型和特征? 并發和線程通信? cargo包管理? 可空類型Option Rust進階教程&#xff1a; 用宏實現參數可變的函數? 類函數宏 簡介 Rust中沒有提供類似try…catch之類…

qt雙擊treeview節點之后,完成編輯,獲取完成編輯得信號

Qt 中&#xff0c;要獲取 QTreeView 節點完成編輯的信號&#xff0c;您可以使用 QTreeView 的 doubleClicked 信號以及重寫相應的編輯觸發函數。通常情況下&#xff0c;完成編輯后會觸發 closeEditor 信號。 以下是一個示例代碼&#xff0c;演示了如何實現這個功能&#xff1a…

【亞太杯思路助攻】2023年第十三屆APMCM亞太地區大學生數學建模競賽——(文末領取方式)

2023年第十三屆APMCM亞太地區大學生數學建模競賽——正式開賽&#xff01;&#xff01;&#xff01; 賽題已由高分雅思學姐翻譯完成&#xff0c;我們的O獎學長也在第一時間分析了賽題&#xff0c;幫助大家最快時間&#xff0c;選擇最適合是自己的賽題。 B題 C題 祝各位小伙伴都…

[Android]使用Retrofit進行網絡請求

以下是使用 Retrofit 發送 POST 請求獲取分頁城市列表的 Kotlin 代碼示例 1.在你的 build.gradle 文件中添加 Retrofit 和 Gson 的依賴 dependencies {......implementation("com.squareup.retrofit2:retrofit:2.9.0")implementation("com.squareup.retrofit2…

排序算法--歸并排序

實現邏輯 ① 將序列每相鄰兩個數字進行歸并操作&#xff0c;形成floor(n/2)個序列&#xff0c;排序后每個序列包含兩個元素 ② 將上述序列再次歸并&#xff0c;形成floor(n/4)個序列&#xff0c;每個序列包含四個元素 ③ 重復步驟②&#xff0c;直到所有元素排序完畢 void pri…

C#結合JavaScript實現上傳視頻到騰訊云點播平臺

目錄 需求 關鍵代碼 界面元素布局 C# 實現服務端的簽名類 上傳視頻的JS實現 視頻演示 小結 需求 在云培訓系統里&#xff0c;制作視頻課件是我們的主要工作之一&#xff0c;制作完成后如果將這些素材存儲到服務器并進行分發播放&#xff0c;是擺在我們面前的一個問題。…

JVM垃圾回收相關算法

目錄 一、前言 二、標記階段&#xff1a;引用計數算法 三、標記階段&#xff1a;可達性分析算法 &#xff08;一&#xff09;基本思路 &#xff08;二&#xff09;GC Roots對象 四、對象的finalization機制 五、MAT與JProfiler的GC Roots溯源 六、清除階段&#xff1a;…

基于PCA算法的點云平面擬合

平面擬合 1、平面擬合2、參考文獻3、相關代碼 1、平面擬合 PCA 是一種數學變換的方法&#xff0c;利用降維的思想在變換中保持變量的總方差不變&#xff0c;將給定的一組變量線性變換為另一組不相關的變量&#xff0c;并且使變換后的第一變量的方差最大&#xff0c;即第一主成分…

OpenCV將兩張圖片拼接成一張圖片

OpenCV將兩張圖片拼接成一張圖片 示例代碼1示例代碼2 可以用opencv或者numpy的拼接函數&#xff0c;直接將兩張圖拼接到一起&#xff0c;很簡單方便&#xff0c;參考代碼2&#xff0c;推薦此方式。新建圖片&#xff0c;將兩張圖片的像素值填充到新圖片對應位置上即可&#xff0…

leetcode 32最長有效括號 34在排序數組中查找元素的第一個和最后一個位置

32. 最長有效括號 給你一個只包含 ( 和 ) 的字符串&#xff0c;找出最長有效&#xff08;格式正確且連續&#xff09;括號子串的長度。 示例 1&#xff1a; 輸入&#xff1a;s "(()" 輸出&#xff1a;2 解釋&#xff1a;最長有效括號子串是 "()" 示例 2&a…

python 二分查找函數應用——bisect_left(nums,target),bisect_right(nums,target)

bisect_left(nums,target),bisect_right(nums,target)是python內置的函數&#xff0c;可以便捷的幫我們完成一些有序序列的查找工作&#xff0c;現在將用三個樣例進行講解演示 前提注意事項&#xff1a; 導入函數模塊 待處理序列必須有序&#xff01;&#xff01;&#xff0…

淺談WPF之各種Template

前幾天寫了一篇文章【淺談WPF之控件模板和數據模板】&#xff0c;有粉絲反饋說這兩種模板容易弄混&#xff0c;不知道什么時候該用控件模塊&#xff0c;什么時候該用數據模板&#xff0c;以及template和itemtemplate之間的關系等&#xff0c;今天專門寫一篇文章&#xff0c;簡述…