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

Matplotlib可視化之自定義顏色繪制精美統(tǒng)計(jì)圖

 更新時(shí)間:2021年06月02日 10:45:33   作者:盼小輝丶  
matplotlib提供的所有繪圖都帶有默認(rèn)樣式.雖然這可以進(jìn)行快速繪圖,但有時(shí)可能需要自定義繪圖的顏色和樣式,以對(duì)繪制更加精美、符合審美要求的圖像.matplotlib的設(shè)計(jì)考慮到了此需求靈活性,很容易調(diào)整matplotlib圖形的樣式,需要的朋友可以參考下

自定義顏色

在生活中,我們可能對(duì)色彩的搭配與審美有自己的偏好,因此,我們可能希望matplotlib遵循自定義的顏色方案,以便所繪制的圖形更好地適合文檔或網(wǎng)頁(yè)。

matplotlib中有多種定義顏色的方法,常見(jiàn)的方法包括:

1.三元組(Triplets):顏色可以描述為一個(gè)實(shí)數(shù)三元組,即顏色的紅、藍(lán)、綠分量,其中每個(gè)分量在[0,1]區(qū)間內(nèi)。因此,(1.0, 0.0, 0.0)表示純紅色,而(1.0, 0.0, 1.0)則表示粉色。

2.四元組(Quadruplets):它們前三個(gè)元素與三元組定義相同,第四個(gè)元素定義透明度值。此值也在[0,1]區(qū)間內(nèi)。將圖形渲染到圖片文件中時(shí),使用透明顏色可以使繪制圖形與背景進(jìn)行混合。

3.預(yù)定義名稱:matplotlib將標(biāo)準(zhǔn)HTML顏色名稱解釋為實(shí)際顏色。例如,字符串red即可表示為紅色。同時(shí)一些某些顏色的具有簡(jiǎn)潔的別名,如下表所示:

別名 顏色 顯示
b blue
g green
r red
c cyan
m magenta
y yellow
k black
w white

4.HTML顏色字符串:matplotlib可以將HTML顏色字符串解釋為實(shí)際顏色。這些字符串被定義為#RRGGBB,其中RR、GG和BB是使用十六進(jìn)制編碼的紅色、綠色和藍(lán)色分量。

5.灰度字符串:matplotlib將浮點(diǎn)值的字符串表示形式解釋為灰度,例如0.75表示中淺灰色。

使用自定義顏色繪制曲線圖

通過(guò)設(shè)置plt.plot()函數(shù)的參數(shù)color(或等效的簡(jiǎn)寫(xiě)為c),可以設(shè)置曲線的顏色,如下所示:

import numpy as np
import matplotlib.pyplot as plt
def pdf(x, mu, sigma):
    a = 1. / (sigma * np.sqrt(2. * np.pi))
    b = -1. / (2. * sigma ** 2)
    return a * np.exp(b * (x - mu) ** 2)
x = np.linspace(-6, 6, 1000)
for i in range(5):
    samples = np.random.standard_normal(50)
    mu, sigma = np.mean(samples), np.std(samples)
    plt.plot(x, pdf(x, mu, sigma), color = str(.15*(i+1)))
plt.plot(x, pdf(x, 0., 1.), color = 'k')
plt.plot(x, pdf(x, 0.2, 1.), color = '#00ff00')
plt.plot(x, pdf(x, 0.4, 1.), color = (0.9,0.9,0.0))
plt.plot(x, pdf(x, 0.4, 1.), color = (0.9,0.9,0.0,0.8))
plt.show()

使用自定義顏色繪制曲線圖

使用自定義顏色繪制散點(diǎn)圖

可以以同樣的方式像控制曲線圖一樣控制散點(diǎn)圖的顏色。有兩種可用的形式:

1.為所有點(diǎn)使用相同的顏色 :所有點(diǎn)都將以相同的顏色顯示。

2.為每個(gè)點(diǎn)定義不同的顏色:為每個(gè)點(diǎn)提供不同的顏色。

為所有點(diǎn)使用相同的顏色

利用從二元高斯分布中提取的兩組點(diǎn)y_1y_2,每一組中點(diǎn)的顏色相同:

import numpy as np
import matplotlib.pyplot as plt
y_1 = np.random.standard_normal((150, 2))
y_1 += np.array((-1, -1)) # Center the distrib. at <-1, -1>
y_2 = np.random.standard_normal((150, 2))
y_2 += np.array((1, 1)) # Center the distrib. at <1, 1>
plt.scatter(y_1[:,0], y_1[:,1], color = 'c')
plt.scatter(y_2[:,0], y_2[:,1], color = 'b')
plt.show()

為所有點(diǎn)使用相同的顏色

為每個(gè)點(diǎn)定義不同的顏色

我們總會(huì)遇到這樣的繪圖場(chǎng)景,需要為不同類別的點(diǎn)使用不同的顏色進(jìn)行繪制,以觀察不同類別間的差異情況。以為例,其數(shù)據(jù)集中數(shù)據(jù)類似如下所示:

5.0,3.3,1.4,0.2,Iris-setosa
7.0,3.2,4.7,1.4,Iris-versicolo

數(shù)據(jù)集的每個(gè)點(diǎn)都存儲(chǔ)在以逗號(hào)分隔的列表中。最后一列給出每個(gè)點(diǎn)的標(biāo)簽(標(biāo)簽包含三類:Iris-virginica、Iris-versicolor 和Iris-Vertosa)。在示例中,這些點(diǎn)的顏色將取決于它們的標(biāo)簽,如下所示:

import numpy as np
import matplotlib.pyplot as plt
label_set = (
    b'Iris-setosa',
    b'Iris-versicolor',
    b'Iris-virginica',
)
def read_label(label):
    return label_set.index(label)
data = np.loadtxt('iris.data', delimiter = ',', converters = { 4 : read_label })
color_set = ('c', 'y', 'm')
color_list = [color_set[int(label)] for label in data[:,4]]
plt.scatter(data[:,0], data[:,1], color = color_list)
plt.show()

為每個(gè)點(diǎn)定義不同的顏色Tips:

對(duì)于三種可能的標(biāo)簽,分別指定一種唯一的顏色。顏色在color_set中定義,標(biāo)簽在label_set中定義。label_set中的第i個(gè)標(biāo)簽與color_set中的第i個(gè)顏色相關(guān)聯(lián)。然后我們利用它們把標(biāo)簽列表轉(zhuǎn)換成顏色列表color_list。然后只需調(diào)用plt.scatter()一次即可顯示所有點(diǎn)及其顏色。我們也可以通過(guò)對(duì)三個(gè)不同的類別單獨(dú)調(diào)用plt.scatter()來(lái)實(shí)現(xiàn),但這將需要更多的代碼。另外需要注意的是:如果兩點(diǎn)有可能有相同的坐標(biāo),但有不同的標(biāo)簽,顯示的顏色將是后繪制點(diǎn)的顏色,可以使用透明顏色,用來(lái)顯示重疊點(diǎn)。

為散點(diǎn)圖中數(shù)據(jù)點(diǎn)的邊使用自定義顏色

與color參數(shù)控制點(diǎn)的顏色一樣,可以使用edgecolor參數(shù)控制數(shù)據(jù)點(diǎn)的邊的顏色??梢詾槊總€(gè)點(diǎn)的邊設(shè)置相同的顏色:

import numpy as np
import matplotlib.pyplot as plt
data = np.random.standard_normal((100, 2))
plt.scatter(data[:,0], data[:,1], color = '1.0', edgecolor='r')
plt.show()

為散點(diǎn)圖中數(shù)據(jù)點(diǎn)的邊使用自定義顏色

Tips:也可以像在為每個(gè)點(diǎn)定義不同的顏色部分中介紹的一樣為每個(gè)點(diǎn)的邊設(shè)置不邊的顏色

使用自定義顏色繪制條形圖

控制繪制條形圖使用的顏色與曲線圖和散點(diǎn)圖的工作原理相同,即通過(guò)可選參數(shù)color:

import numpy as np
import matplotlib.pyplot as plt
w_pop = np.array([5., 30., 45., 22.])
m_pop = np.array( [5., 25., 50., 20.])
x = np.arange(4)
plt.barh(x, w_pop, color='m')
plt.barh(x, -m_pop, color='c')
plt.show()

使用自定義顏色繪制條形圖Tips:

使用pyplot.bar()和pyplot.barh()函數(shù)自定義顏色繪制條形圖的工作方式與pyplot.scatter()完全相同,只需設(shè)置可選參數(shù)color,同時(shí)也可以參數(shù)edgecolor控制條形邊的顏色。

import numpy as np
import matplotlib.pyplot as plt
values = np.random.random_integers(99, size = 50)
color_set = ('c', 'm', 'y', 'b')
color_list = [color_set[(len(color_set) * val) // 100] for val in values]
plt.bar(np.arange(len(values)), values, color = color_list)
plt.show()

使用自定義顏色控制條形圖中條形邊的顏色

使用自定義顏色繪制餅圖

自定義餅圖顏色的方法類似于條形圖:

import numpy as np
import matplotlib.pyplot as plt
color_set = ('c', 'm', 'y', 'b')
values = np.random.rand(6)
plt.pie(values, colors = color_set)
plt.show()

使用自定義顏色繪制餅圖Tips:

餅圖接受使用colors參數(shù)(注意,此處是colors,而不是在plt.plot()中使用的color)的顏色列表。但是,如果顏色數(shù)少于輸入值列表中的元素?cái)?shù),那么plt.pie()將循環(huán)使用顏色列表中的顏色。在示例中,使用包含四種顏色的列表,為包含六個(gè)值的餅圖著色,因此,其中有兩個(gè)顏色將使用兩次。

使用自定義顏色繪制箱型圖

將箱型圖中線條顏色進(jìn)行修改:

import numpy as np
import matplotlib.pyplot as plt
values = np.random.randn(100)
b = plt.boxplot(values)
for name, line_list in b.items():
    for line in line_list:
        line.set_color('m')
plt.show()

使用自定義顏色繪制箱型圖

使用色彩映射繪制散點(diǎn)圖

如果要在圖形中使用多種顏色,逐個(gè)定義每種顏色并不是最佳方案,色彩映射可以解決此問(wèn)題。色彩映射用一個(gè)變量對(duì)應(yīng)一個(gè)值(顏色)的連續(xù)函數(shù)定義顏色。matplotlib提供了幾種常見(jiàn)的顏色映射;大多數(shù)是連續(xù)的顏色漸變。
色彩映射在matplotib.cm模塊中定義,提供創(chuàng)建和使用色彩映射的函數(shù),它還提供了預(yù)定義的色彩映射選擇。
函數(shù)pyplot.scatter()接受color參數(shù)的值列表,當(dāng)提供cmap參數(shù)時(shí),這些值將被解釋為色彩映射的索引:

import numpy as np
import matplotlib.cm as cm
import matplotlib.pyplot as plt
n = 256
angle = np.linspace(0, 8 * 2 * np.pi, n)
radius = np.linspace(.5, 1., n)
x = radius * np.cos(angle)
y = radius * np.sin(angle)
plt.scatter(x, y, c = angle, cmap = cm.hsv)
plt.show()

使用色彩映射繪制散點(diǎn)圖

Tips:在matplotlib.cm模塊中提供了大量預(yù)定義的色彩映射,其中cm.hsv包含全光譜的顏色。

使用色彩映射繪制條形圖

plt.scatter()函數(shù)內(nèi)置了對(duì)色彩映射的支持,其他一些繪圖函數(shù)也內(nèi)置支持色彩映射。但是,有些函數(shù)(如pyplot.bar())并未內(nèi)置對(duì)色彩映射的支持。但是matplotlib可以從顏色映射顯式生成顏色:

import numpy as np
import matplotlib.cm as cm
import matplotlib.pyplot as plt
import matplotlib.colors as col
values = np.random.random_integers(99, size = 50)
cmap = cm.ScalarMappable(col.Normalize(0, 99), cm.binary)
plt.bar(np.arange(len(values)), values, color = cmap.to_rgba(values))
plt.show()

使用色彩映射繪制條形圖

Tips:首先創(chuàng)建色彩映射cmap,以便將[0, 99]范圍內(nèi)的值映射到matplotlib.cm.binary的顏色。然后,函數(shù)cmap.to_rgba將值列表轉(zhuǎn)換為顏色列表。因此,盡管plt.bar并未內(nèi)置色彩映射支持,但依舊可以使用并不復(fù)雜的代碼實(shí)現(xiàn)色彩映射。

創(chuàng)建自定義配色方案

matplotlib使用的默認(rèn)顏色考慮的主要對(duì)象是打印文檔或出版物。因此,默認(rèn)情況下,背景為白色,而標(biāo)簽、軸和其他注釋則顯示為黑色,在某些不同的使用環(huán)境中,我們可能需要使用的配色方案;例如,將圖形背景設(shè)置為黑色,注釋設(shè)置為白色。
在matplotlib中,各種對(duì)象(如軸、圖形和標(biāo)簽)都可以單獨(dú)修改。但逐個(gè)更改這些對(duì)象的顏色配置并非最佳方案。在matplotlib中,所有對(duì)象都可以利用集中式配置修改其默認(rèn)顏色:

import numpy as np
import matplotlib as mpl
from matplotlib import pyplot as plt
mpl.rc('lines', linewidth = 2.)
mpl.rc('axes', facecolor = 'k', edgecolor = 'w')
mpl.rc('xtick', color = 'w')
mpl.rc('ytick', color = 'w')
mpl.rc('text', color = 'w')
mpl.rc('figure', facecolor = 'k', edgecolor ='w')
mpl.rc('axes', prop_cycle = mpl.cycler(color=[(0.1, .5, .75),(0.5, .5, .75)]))
x = np.linspace(0, 7, 1024)
plt.plot(x, np.sin(x))
plt.plot(x, np.cos(x))
plt.show()

創(chuàng)建自定義配色方案

到此這篇關(guān)于Matplotlib可視化之自定義顏色繪制精美統(tǒng)計(jì)圖的文章就介紹到這了,更多相關(guān)Matplotlib繪制統(tǒng)計(jì)圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在IntelliJ IDEA中.idea文件是什么可以刪除嗎

    在IntelliJ IDEA中.idea文件是什么可以刪除嗎

    相信有很多小伙伴,在用idea寫(xiě)java代碼的時(shí)候,創(chuàng)建工程總是會(huì)出現(xiàn).idea文件,該文件也從來(lái)沒(méi)去打開(kāi)使用過(guò),那么它在我們項(xiàng)目里面,扮演什么角色,到底能不能刪除它呢?這篇文章主要介紹了在IntelliJ IDEA中.idea文件是什么可以刪除嗎,需要的朋友可以參考下
    2024-01-01
  • 深入淺出解析Java ThreadLocal原理

    深入淺出解析Java ThreadLocal原理

    ThreadLocal是JDK包提供的,它提供線程本地變量,如果創(chuàng)建一樂(lè)ThreadLocal變量,那么訪問(wèn)這個(gè)變量的每個(gè)線程都會(huì)有這個(gè)變量的一個(gè)副本,在實(shí)際多線程操作的時(shí)候,操作的是自己本地內(nèi)存中的變量,從而規(guī)避了線程安全問(wèn)題,感興趣的朋友快來(lái)看看吧
    2021-11-11
  • Java?中很好用的數(shù)據(jù)結(jié)構(gòu)EnumSet

    Java?中很好用的數(shù)據(jù)結(jié)構(gòu)EnumSet

    這篇文章主要介紹了Java?中很好用的數(shù)據(jù)結(jié)構(gòu)EnumSet,EnumMap即屬于一個(gè)Map,下文圍繞主題展開(kāi)詳細(xì)內(nèi)容,需要的小伙伴可以參考參考一下
    2022-05-05
  • Spring Boot項(xiàng)目利用Redis實(shí)現(xiàn)集中式緩存實(shí)例

    Spring Boot項(xiàng)目利用Redis實(shí)現(xiàn)集中式緩存實(shí)例

    本篇文章主要介紹了Spring Boot項(xiàng)目利用Redis實(shí)現(xiàn)集中式緩存實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Java中兩種拋出異常的方式示例詳解

    Java中兩種拋出異常的方式示例詳解

    在Java中有兩種拋出異常的方式,一種是throw,直接拋出異常,另一種是throws,間接拋出異常,本文給大家詳細(xì)說(shuō)明java中兩種拋出異常的方式,感興趣的朋友一起看看吧
    2023-08-08
  • java split()使用方法解析

    java split()使用方法解析

    這篇文章主要介紹了java split()使用方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • java8之LocalDate的使用、LocalDate格式化問(wèn)題

    java8之LocalDate的使用、LocalDate格式化問(wèn)題

    這篇文章主要介紹了java8之LocalDate的使用、LocalDate格式化問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • C++字符串的處理詳解

    C++字符串的處理詳解

    這篇文章主要介紹了C++ string字符串類,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08
  • java編程實(shí)現(xiàn)優(yōu)先隊(duì)列的二叉堆代碼分享

    java編程實(shí)現(xiàn)優(yōu)先隊(duì)列的二叉堆代碼分享

    這篇文章主要介紹了java編程實(shí)現(xiàn)優(yōu)先隊(duì)列的二叉堆代碼分享,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • 簡(jiǎn)單了解Spring Cloud Alibaba相關(guān)知識(shí)

    簡(jiǎn)單了解Spring Cloud Alibaba相關(guān)知識(shí)

    這篇文章主要介紹了簡(jiǎn)單了解Spring Cloud Alibaba相關(guān)知識(shí),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10

最新評(píng)論

盐津县| 永德县| 浠水县| 东山县| 文水县| 谷城县| 桂东县| 会宁县| SHOW| 金华市| 林州市| 宜春市| 平乐县| 湘乡市| 扎鲁特旗| 全椒县| 孝感市| 蒙城县| 民勤县| 浦北县| 行唐县| 沐川县| 灌云县| 台东县| 漳平市| 淅川县| 区。| 漳州市| 思茅市| 轮台县| 南昌县| 云龙县| 河北区| 辽阳市| 新干县| 昌邑市| 峨山| 涞源县| 呼和浩特市| 云和县| 泰和县|