欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實現(xiàn)漸變色的水平堆疊圖

 更新時間:2022年04月27日 11:40:14   作者:高攀中的穩(wěn)健少年  
這篇文章主要為大家詳細(xì)介紹了Python實現(xiàn)漸變色的水平堆疊圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Python實現(xiàn)漸變色水平堆疊圖的具體代碼,供大家參考,具體內(nèi)容如下

關(guān)鍵詞:python、matplotlib、barh、堆疊
起源:做數(shù)據(jù)處理時候需要制造一張如下的圖片:

示例圖

恰逢最近在學(xué)Python,然后就想試一下用python去實現(xiàn),因為稍微接觸過matplotlib這個庫,然后就想著用它去實現(xiàn)

首先通過查資料,才知道這種圖的名字叫做“水平堆疊條狀圖”,然后使用Matplotlib.plot.barh()就可以實現(xiàn)水平堆疊的效果;

水平或者垂直堆疊的效果,網(wǎng)上有挺多教程的了,這里就不再進(jìn)行描述,主要是為了記錄一下怎么去實現(xiàn)漸變色

一開始找資料,并沒有找到這種堆疊圖的漸變色怎么做出來
如果有大哥找到了簡便方法,還請告知一下!然后就嘗試著自己去寫一些語句去實現(xiàn);現(xiàn)在就將研究的流程做個記錄

首先是繪圖函數(shù)的認(rèn)識

barh函數(shù)的參數(shù)很多,但是我們只關(guān)注幾個參數(shù):
X表示是上圖中的 E1 E2 E3這樣的坐標(biāo)(可以理解為刻度值吧)
width表示的是當(dāng)前堆疊部分的長度,這個值很關(guān)鍵!
left值是當(dāng)前堆疊部分的起始點(diǎn),這個值也很關(guān)鍵
color表示的是當(dāng)前堆疊部分的顏色,遵循RGB順序,但是它范圍(0——0.1),即我們需將實際(R,G,B)值除以255再傳入
alpha表示的是當(dāng)前堆疊部分的顏色透明度,即和上面的color參數(shù)一起構(gòu)成了(RGBA)
label表示的是當(dāng)前堆疊部分的圖形樣例,即上圖中的"label=二級指標(biāo)1"那樣的圖例;該參數(shù)為空的時候不創(chuàng)建圖例,如果不為空就會根據(jù)傳入的字符串創(chuàng)建圖例,默認(rèn)是不支持中文的,如果要用中文,需要加以下這兩句話在import matplotlib之后

#用來正常顯示中文
plt.rcParams['font.sans-serif']=['SimHei','Times New Roman']?
plt.rcParams['axes.unicode_minus']=False
`

然后講講怎么思考的

X的就是數(shù)軸上的顯示的刻度值(你也可以給他重命名);
width表示的是堆疊(填充)長度,left是本次填充起始點(diǎn),那么我們將這兩個參數(shù)結(jié)合以下,就可以將本該一次填充完的長度,分成幾次填充,再分別給這幾次填充使用臨近的RGB值,就會呈現(xiàn)一種漸變的效果

# 一次填充完成
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif']=['SimHei','Times New Roman'] # 用來正常顯示中文標(biāo)簽
plt.rcParams['axes.unicode_minus']=False
?? ?# 網(wǎng)上找到的漸變色的RGB配色方案
Color1 = np.array([131, 175, 155])
Color2 = np.array([200, 200, 169])
Color3 = np.array([249, 205, 173])

x = ["E1"]
Y1 = np.array([0.1])
Y2 = np.array([0.3])
plt.barh(x, Y1, align="center", color=Color1 / 255, alpha=1, label="ONE1")
plt.barh(x, Y2, left=Y1, color=Color2 / 255, alpha=1, label="ONE2")
plt.legend()
plt.show()

上述代碼運(yùn)行以后的效果是這樣的

然后基于我們上述的分析,我們將對“ONE2”色塊運(yùn)用參數(shù):X,width,left,color進(jìn)行分次填充實現(xiàn)漸變效果:

首先我們定義一個變量divid,這個變量將會決定了你分多少次填充

#填充次數(shù),值越大漸變效果越好,但是計算量也會相應(yīng)的增大
divid=20

其次我們將我們原來的填充量、顏色漸變差值分別分別除以divid

Y2_rate=Y2/divid
#用下一個顏色減去當(dāng)前色快的顏色;這也將會解釋了我后來的完整代碼里,將會嚴(yán)格要求Color個數(shù)大于 Y 的個數(shù)?
#實際上Color和Y大多數(shù)情況下是行向量,但仍然用“個數(shù)”來表述,為了更方便理解
Color_rate=(Color3-Color2)/divid

然后我們將會將這兩個值在barh函數(shù)里進(jìn)行使用

for i in range(divid):
? ? if i==int( divid /2 ): #這里是去原先整個色塊的中心RGB作為圖例色
? ? ? ? plt.barh(x,Y_rate,left=Y1+Y_rate*i,color=(Color1+i*Color_rate) / 255, alpha=1.0,label='ONE2')
? ? else:
? ? ? ? plt.barh(x,Y_rate,left=Y1+Y_rate*i,color=(Color1+i*Color_rate) / 255, alpha=1.0)

運(yùn)行之后的效果為

而為了說明divid在這里影響漸變效果我們將分辨用幾個遞增的divid值來進(jìn)行演示
divid=2時候,出現(xiàn)了明顯的分界線

divid=8時候,分界線被淡化了,但還是隱約可見

divid=50的時候,幾乎看不到分界線了

以上效果僅僅是基于一個X 一個Y的色快漸變進(jìn)行演示,是為了更好地演示方法和思路;但是實際應(yīng)用中,X,Y都將會是較長的行向量,因此,需要斟酌一下divid的選擇;

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實現(xiàn)連接FTP并下載文件夾

    Python實現(xiàn)連接FTP并下載文件夾

    這篇文章主要為大家介紹了如何利用Python實現(xiàn)鏈接FTP服務(wù)器,并下載相應(yīng)的文件夾,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-03-03
  • python基于爬蟲+django,打造個性化API接口

    python基于爬蟲+django,打造個性化API接口

    這篇文章主要介紹了python基于爬蟲+django,打造個性化API接口的方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-01-01
  • pycharm中import導(dǎo)入包呈現(xiàn)灰色的問題及解決

    pycharm中import導(dǎo)入包呈現(xiàn)灰色的問題及解決

    這篇文章主要介紹了pycharm中import導(dǎo)入包呈現(xiàn)灰色的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Python 中 sorted 如何自定義比較邏輯

    Python 中 sorted 如何自定義比較邏輯

    這篇文章主要介紹了Python中sorted如何自定義比較邏輯,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-02-02
  • Python實現(xiàn)對特定列表進(jìn)行從小到大排序操作示例

    Python實現(xiàn)對特定列表進(jìn)行從小到大排序操作示例

    這篇文章主要介紹了Python實現(xiàn)對特定列表進(jìn)行從小到大排序操作,涉及Python文件讀取、計算、正則匹配、排序等相關(guān)操作技巧,需要的朋友可以參考下
    2019-02-02
  • Python元素集合的列表切片

    Python元素集合的列表切片

    這篇文章主要介紹了Python元素集合的列表切片,列表是元素的集合,列表的這些子集稱為切片,下面違章圍繞Python列表切片得相關(guān)資料展開學(xué)習(xí)內(nèi)容,需要的朋友可以參考一下,希望對你的學(xué)習(xí)有所幫助
    2022-02-02
  • python向xls寫入數(shù)據(jù)(包括合并,邊框,對齊,列寬)

    python向xls寫入數(shù)據(jù)(包括合并,邊框,對齊,列寬)

    這篇文章主要介紹了python向xls寫入數(shù)據(jù)(包括合并,邊框,對齊,列寬),幫助大家更好的利用python處理表格,感興趣的朋友可以了解下
    2021-02-02
  • pycharm 的Structure界面設(shè)置操作

    pycharm 的Structure界面設(shè)置操作

    這篇文章主要介紹了pycharm 的Structure界面設(shè)置操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • 利用python來跟蹤ip地址的方法

    利用python來跟蹤ip地址的方法

    今天來介紹一個流行的 python庫 ip2geotools,使用它可以確定 IP地址 對應(yīng)的 國家、地區(qū)、城市、緯度和經(jīng)度等,文中通過代碼示例介紹了如何使用python來跟蹤ip地址,需要的朋友可以參考下
    2023-06-06
  • 利用Python優(yōu)雅的登錄校園網(wǎng)

    利用Python優(yōu)雅的登錄校園網(wǎng)

    這篇文章主要介紹了如何利用Python優(yōu)雅的登錄校園網(wǎng),幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-10-10

最新評論