最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

示例圖

恰逢最近在學(xué)Python,然后就想試一下用python去實(shí)現(xiàn),因?yàn)樯晕⒔佑|過(guò)matplotlib這個(gè)庫(kù),然后就想著用它去實(shí)現(xiàn)

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

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

一開(kāi)始找資料,并沒(méi)有找到這種堆疊圖的漸變色怎么做出來(lái)
如果有大哥找到了簡(jiǎn)便方法,還請(qǐng)告知一下!然后就嘗試著自己去寫一些語(yǔ)句去實(shí)現(xiàn);現(xiàn)在就將研究的流程做個(gè)記錄

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

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

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

然后講講怎么思考的

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

# 一次填充完成
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif']=['SimHei','Times New Roman'] # 用來(lái)正常顯示中文標(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)行以后的效果是這樣的

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

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

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

其次我們將我們?cè)瓉?lái)的填充量、顏色漸變差值分別分別除以divid

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

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

for i in range(divid):
? ? if i==int( divid /2 ): #這里是去原先整個(gè)色塊的中心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)行之后的效果為

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

divid=8時(shí)候,分界線被淡化了,但還是隱約可見(jiàn)

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

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

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

相關(guān)文章

  • python中pathlib模塊的基本用法與總結(jié)

    python中pathlib模塊的基本用法與總結(jié)

    這篇文章主要給大家介紹了關(guān)于python中pathlib模塊的基本用法與總結(jié)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 詳解python中的模塊及包導(dǎo)入

    詳解python中的模塊及包導(dǎo)入

    python中的導(dǎo)入關(guān)鍵字:import 以及from import。這篇文章主要介紹了詳解python中的模塊及包導(dǎo)入,需要的朋友可以參考下
    2019-08-08
  • Python 工具類實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳功能詳解

    Python 工具類實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳功能詳解

    用python進(jìn)行大文件下載的時(shí)候,一旦出現(xiàn)網(wǎng)絡(luò)波動(dòng)問(wèn)題,導(dǎo)致文件下載到一半。如果將下載不完全的文件刪掉,那么又需要從頭開(kāi)始,如果連續(xù)網(wǎng)絡(luò)波動(dòng),是不是要頭禿了。本文提供斷點(diǎn)續(xù)傳下載工具方法,希望可以幫助到你
    2021-10-10
  • 對(duì)Python強(qiáng)大的可變參數(shù)傳遞機(jī)制詳解

    對(duì)Python強(qiáng)大的可變參數(shù)傳遞機(jī)制詳解

    今天小編就為大家分享一篇對(duì)Python強(qiáng)大的可變參數(shù)傳遞機(jī)制詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • 在Python的web框架中編寫創(chuàng)建日志的程序的教程

    在Python的web框架中編寫創(chuàng)建日志的程序的教程

    這篇文章主要介紹了在Python的web框架中編寫創(chuàng)建日志的程序的教程,示例代碼基于Python2.x版本,需要的朋友可以參考下
    2015-04-04
  • Python 操作 PostgreSQL 數(shù)據(jù)庫(kù)示例【連接、增刪改查等】

    Python 操作 PostgreSQL 數(shù)據(jù)庫(kù)示例【連接、增刪改查等】

    這篇文章主要介紹了Python 操作 PostgreSQL 數(shù)據(jù)庫(kù)的方法,結(jié)合實(shí)例形式分析了Python 連接PostgreSQL及增刪改查等相關(guān)操作技巧,需要的朋友可以參考下
    2020-04-04
  • 在python代碼中加入環(huán)境變量的語(yǔ)句操作

    在python代碼中加入環(huán)境變量的語(yǔ)句操作

    這篇文章主要介紹了在python代碼中加入環(huán)境變量的語(yǔ)句操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • tornado 多進(jìn)程模式解析

    tornado 多進(jìn)程模式解析

    這篇文章主要介紹了tornado 多進(jìn)程模式解析,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • 詳解python中executemany和序列的使用方法

    詳解python中executemany和序列的使用方法

    這篇文章主要介紹了詳解python中executemany和序列的使用方法的相關(guān)資料,需要的朋友可以參考下
    2017-08-08
  • Python中的復(fù)制、淺拷貝與深拷貝解讀

    Python中的復(fù)制、淺拷貝與深拷貝解讀

    這篇文章主要介紹了Python中的復(fù)制、淺拷貝與深拷貝解讀,對(duì)于可變對(duì)象,賦值是最簡(jiǎn)單省事的,如b=a,意思是直接使得a指向b代表的對(duì)象,兩者id一樣,指向同一個(gè)對(duì)象,一個(gè)修改,另一個(gè)也隨之變化,需要的朋友可以參考下
    2023-11-11

最新評(píng)論

济宁市| 琼海市| 新津县| 扶余县| 东城区| 安乡县| 深州市| 郧西县| 松桃| 永州市| 潍坊市| 英吉沙县| 嘉定区| 富平县| 公主岭市| 特克斯县| 依兰县| 齐齐哈尔市| 重庆市| 桐乡市| 揭东县| 咸宁市| 天门市| 萝北县| 买车| 满城县| 涞源县| 洛南县| 宜君县| 墨江| 萨迦县| 运城市| 年辖:市辖区| 皮山县| 濮阳市| 新竹市| 汉源县| 固镇县| 黔南| 修水县| 青河县|