Plotly 直方圖

Ammar Ali 2024年2月15日
Plotly 直方圖

本教程將討論在 Python 中使用 Plotly 的 histogram() 函式建立直方圖。

在 Python 中使用 Plotly 的 histogram() 函式建立直方圖

在統計學中,直方圖表示數值資料的分佈。資料表示 bin,每個 bin 的高度等於資料值的總和。

直方圖是一種聚合條形圖,可以在 Plotly 中視覺化分類軸和日期軸以及線性軸上的資料。我們可以使用 Plotly 的 histogram() 函式來建立給定資料的直方圖。

要建立直方圖,我們必須在 histogram() 函式內傳遞資料框或 x 和 y 軸值。

例如,讓我們建立一些隨機資料的簡單直方圖。請參閱下面的程式碼。

import plotly.express as px

values = [[3, 4, 5], [2, 2, 2]]
labels = ["Day1", "Day2", "Day3"]
fig = px.histogram(x=labels, y=values, width=500, height=400)
fig.show()

輸出:

簡單的直方圖

我們使用寬度和高度引數來設定直方圖的寬度和高度。資料有三列,每列有兩個值,我們在圖中也有三個分格,有兩種不同的顏色。

總高度是列中存在的兩個值的總和。使用 color 引數,我們可以為每個 bin 賦予與預設顏色序列不同的顏色。

我們還可以使用 pattern_shape 引數為每​​個 bin 賦予不同的模式。要將直方圖轉換為在每個子圖中包含單個 bin 的一組子圖,我們可以將 facet_row 用於行,將 facet_col 用於列,並將其值設定為用於設定名稱的整數或字串列表子圖。

我們還可以使用 facet_row_spacingfacet_col_spacing 引數更改每個子圖之間的間距,並將其值設定為從 0 到 1 的浮點數。我們可以使用邊緣引數在直方圖上方繪製分佈圖。

我們可以使用 opacity 引數設定 bin 的不透明度,並將其值設定為 0 到 1。我們還可以使用 log_xlog_y 引數將軸更改為對數比例。

我們可以使用 nbins 引數設定 bin 的數量。我們可以使用 title 引數給直方圖一個標題。我們還可以使用 histfunc 引數將直方圖函式從總和更改為平均值或最小值。

例如,讓我們更改上面提到的屬性。請參閱下面的程式碼。

import plotly.express as px

values = [[3, 4, 5], [2, 2, 2]]
labels = ["Day1", "Day2", "Day3"]
fig = px.histogram(
    x=labels,
    y=values,
    width=500,
    height=400,
    color=labels,
    pattern_shape=labels,
    marginal="box",
    opacity=0.7,
    histfunc="avg",
    title="Histogram",
)
fig.show()

輸出:

改變直方圖的屬性

我們可以使用 color_discrete_sequencepattern_shape_sequence 引數更改預設顏色和圖案序列。我們可以將顏色序列設定為 Plotly 支援的顏色序列,如 Dark24Light24

我們還可以使用 pattern_shape_sequence 引數更改每個 bin 的模式,並將其設定為有效的 Plotly 支援的形狀 ['/', '\\', 'x', '-', '|', '+', '.']

例如,讓我們改變上面直方圖的顏色和圖案順序。請參閱下面的程式碼。

import plotly.express as px

values = [[3, 4, 5], [2, 2, 2]]
labels = ["Day1", "Day2", "Day3"]
fig = px.histogram(
    x=labels,
    y=values,
    width=500,
    height=400,
    color=labels,
    pattern_shape=labels,
    color_discrete_sequence=px.colors.qualitative.Light24,
    pattern_shape_sequence=["-", ".", "x"],
)
fig.show()

輸出:

改變直方圖的顏色和圖案序列

除了使用顏色序列,我們還可以使用 color_discrete_map 引數為每​​個 bin 賦予任何顏色。此引數用於覆蓋預設顏色。

如果我們只改變幾個 bin 顏色,其餘的 bin 顏色將從顏色序列中分配。例如,讓我們將前兩個 bin 顏色更改為黃色和黑色。

請參閱下面的程式碼。

import plotly.express as px

values = [[3, 4, 5], [2, 2, 2]]
labels = ["Day1", "Day2", "Day3"]
fig = px.histogram(
    x=labels,
    y=values,
    width=500,
    height=400,
    color=labels,
    pattern_shape=labels,
    color_discrete_sequence=px.colors.qualitative.Light24,
    pattern_shape_sequence=["-", ".", "x"],
    color_discrete_map={"Day1": "yellow", "Day2": "black"},
)
fig.show()

輸出:

改變直方圖箱的顏色

我們可以使用 histogram() 函式跟蹤來更改直方圖的許多其他屬性。例如,我們可以使用 showlegend 引數隱藏圖例並設定其 false 值。

我們可以使用 text 引數在每個 bin 中新增文字,並將其值設定為字串。我們還可以使用 textposition 引數設定文字位置,並將其值設定為 inside、outside 和 auto。

我們還可以在每個 bin 周圍新增一條線,並使用 marker 引數設定其顏色和寬度。例如,讓我們改變上面提到的痕跡。請參閱下面的程式碼。

import plotly.express as px

values = [[3, 4, 5], [2, 2, 2]]
labels = ["Day1", "Day2", "Day3"]
fig = px.histogram(
    x=labels,
    y=values,
    width=500,
    height=400,
    color=labels,
    pattern_shape=labels,
    color_discrete_sequence=px.colors.qualitative.Light24,
    pattern_shape_sequence=["-", ".", "x"],
    color_discrete_map={"Day1": "yellow", "Day2": "black"},
)
fig.update_traces(
    showlegend=False, text="hello", marker=dict(line=dict(color="red", width=5))
)
fig.show()

輸出:

改變柱狀圖的痕跡

檢查此連結以獲取有關 histogram() 函式跟蹤的更多詳細資訊。

作者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

相關文章 - Plotly Plot