」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 您可以使用 Matplotlib 根據 Pandas 中的特定列值繪製彩色散佈圖嗎?

您可以使用 Matplotlib 根據 Pandas 中的特定列值繪製彩色散佈圖嗎?

發佈於2024-11-08
瀏覽:863

Can You Color Scatter Plots Based on Specific Column Values in Pandas with Matplotlib?

使用 Pandas 和 Matplotlib 按列值對散點圖著色

Matplotlib 是一個流行的 Python 庫,用於在Python。本文探討使用 Matplotlib 根據 Pandas DataFrame 特定列中的值對散佈圖進行著色。

導入和資料

首先,我們導入必要的函式庫,包括 Matplotlib(作為 plt)和 Pandas(作為 pd)。我們也產生一個包含三列的範例資料幀(「df」):「身高」、「體重」和「性別」。

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

np.random.seed(0)
N = 37
_genders = ["Female", "Male", "Non-binary", "No Response"]
df = pd.DataFrame({
    "Height (cm)": np.random.uniform(low=130, high=200, size=N),
    "Weight (kg)": np.random.uniform(low=30, high=100, size=N),
    "Gender": np.random.choice(_genders, size=N),
})

2021年8月更新

Seaborn引入了新的圖形級函數,例如0.11.0版本中的seaborn.relplot。建議使用這些函數,而不是直接使用 FacetGrid。

sns.relplot(data=df, x="Weight (kg)", y="Height (cm)", hue="Gender", hue_order=_genders, aspect=1.61)
plt.show()

舊答案 (2015)

如果你想直接使用 Matplotlib,你需要將 matplotlib 的散佈函數對應到 Pandas DataFrame 的類別上。為此:

  • 根據列和顏色建立一個包含唯一類別的字典。
  • 在 DataFrame 中新增一個新的「顏色」列,為每個類別指派對應的顏色。
  • 使用散點函數繪製數據,並將顏色列指定為「c」參數。
def dfScatter(df, xcol='Height', ycol='Weight', catcol='Gender'):
    fig, ax = plt.subplots()
    categories = np.unique(df[catcol])
    colors = np.linspace(0, 1, len(categories))
    colordict = dict(zip(categories, colors))

    df["Color"] = df[catcol].apply(lambda x: colordict[x])
    ax.scatter(df[xcol], df[ycol], c=df.Color)
    return fig

fig = dfScatter(df)
fig.savefig('fig1.png')

按照以下步驟,您可以使用 Pandas 和 Matplotlib 輕鬆地根據列值對散佈圖進行顏色繪製。

版本聲明 本文轉載於:1729320559如有侵犯,請洽[email protected]刪除
最新教學 更多>
  • JavaScript 如何控制逾時執行並確定剩餘時間?
    JavaScript 如何控制逾時執行並確定剩餘時間?
    JavaScript 中的暫停和恢復逾時使用 JavaScript 時,可能需要控制非同步操作的流程,例如逾時。在這裡,我們探索暫停和恢復活動逾時的方法,以及檢索當前逾時的剩餘時間。 暫停和恢復逾時要暫停逾時,您可以使用包裝器攔截 window.setTimeout 呼叫並提供必要功能的函數。包裝函...
    程式設計 發佈於2024-11-09
  • 為什麼非同步載入腳本中 document.write() 受到限制?
    為什麼非同步載入腳本中 document.write() 受到限制?
    非同步載入腳本中的執行限制:了解document.write() 限制嘗試從非同步載入的腳本寫入文件會引發控制台訊息「無法在'文件'上執行'寫入':無法從非同步載入的外部腳本,除非明確開啟它。」儘管腳本的行為符合預期,但仍可能出現此訊息,讓開發人員感到困惑。 為什麼有...
    程式設計 發佈於2024-11-09
  • 如何根據元素的高度保持元素的縱橫比?
    如何根據元素的高度保持元素的縱橫比?
    根據高度維護 Div 縱橫比將元素的寬度保持為其高度的百分比可能具有挑戰性。雖然使用 padding-top 的百分比值可以達到相反的效果,但 padding-left 作為百分比依賴於物件的寬度,而不是其高度。 為了解決這個問題,CSS 引入了寬高比屬性,提供一個優雅的解決方案來根據高度保持一致的...
    程式設計 發佈於2024-11-09
  • 如何使用 PHP 或 Perl 在瀏覽器中直接顯示 PDF 檔案?
    如何使用 PHP 或 Perl 在瀏覽器中直接顯示 PDF 檔案?
    使用PHP 或Perl 在瀏覽器中顯示PDF 檔案直接在瀏覽器中顯示PDF 檔案可能是追蹤使用者參與度和追蹤用戶參與度的有用技術。保護敏感文件位置。雖然有下載或建立 PDF 的簡單方法,但如何載入現有 PDF 檔案進行檢視還不是很明顯。 PHP 解決方案:以下 PHP 程式碼可以是用於在瀏覽器中顯示...
    程式設計 發佈於2024-11-09
  • 為什麼curl_exec()回傳False以及如何有效處理它?
    為什麼curl_exec()回傳False以及如何有效處理它?
    當curl_exec()返回False時:深入研究錯誤處理領域在Web開發的世界中,curl_exec()函數在從遠端伺服器檢索資料方面起著至關重要的作用。然而,程式設計師經常遇到一個令人費解的情況,即該函數始終傳回 false。為了解開這個謎團,我們必須踏上錯誤檢查和處理的核心之旅。 當curl_...
    程式設計 發佈於2024-11-09
  • Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta:列偏移的刪除和恢復Bootstrap 4 在其Beta 1 版本中引入了重大更改柱子偏移了。然而,隨著 Beta 2 的後續發布,這些變化已經逆轉。 從 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    程式設計 發佈於2024-11-09
  • 如何消除 Bootstrap 堆疊行中的間隙:綜合指南
    如何消除 Bootstrap 堆疊行中的間隙:綜合指南
    Bootstrap 堆疊行中的間隙:綜合解決方案Bootstrap 堆疊行中存在間隙對於開發人員來說可能是一個令人沮喪的問題。為了解決這個問題,有幾種有效的解決方案可用。 1。設定元素高度標準化:為所有投資組合元素分配固定高度可確保內容的平均分佈。這消除了不同元素尺寸導致間隙的可能性。 2。使用 M...
    程式設計 發佈於2024-11-09
  • 為什麼使用“shell_exec”從 PHP 調用時我的 Bash 腳本無法執行?
    為什麼使用“shell_exec”從 PHP 調用時我的 Bash 腳本無法執行?
    從PHP 執行Bash 指令:腳本執行失敗故障排除在這個問題中,我們遇到一位PHP 開發人員嘗試使用shell_exec 從PHP 執行bash 腳本。使用的語法為:$output = shell_exec("./script.sh var1 var2");但是,當呼叫指令時腳本...
    程式設計 發佈於2024-11-09
  • 為什麼按鈕不拉伸以用“display: block”和“width: auto”填充容器?
    為什麼按鈕不拉伸以用“display: block”和“width: auto”填充容器?
    為什麼「display: block」和「width: auto」不能拉伸按鈕來填滿容器? 當使用“display: block”和“ width: auto” 在按鈕上,它可能會拉伸並填充其容器。然而,情況並非總是如此。特別是,現代瀏覽器中的按鈕在這方面的行為與其他區塊元素不同。 這種行為背後的原...
    程式設計 發佈於2024-11-09
  • 在 Docker 容器上設定 Redmine
    在 Docker 容器上設定 Redmine
    Redmine 是一個靈活的開源專案管理和問題追蹤 Web 應用程式。它廣泛用於管理專案、追蹤錯誤以及處理任務和截止日期。 Redmine 使用 Ruby on Rails 開發,具有高度可自訂性,支援廣泛的團隊協作和專案組織功能。 Redmine 因其靈活性、客製化和開源特性而成為商業專案管理工...
    程式設計 發佈於2024-11-09
  • 哪種 HTML5 Reset CSS 提供最全面的覆蓋範圍?
    哪種 HTML5 Reset CSS 提供最全面的覆蓋範圍?
    哪種 HTML5 Reset CSS 提供廣泛的覆蓋範圍? 大量的瀏覽器版本為網頁設計帶來了挑戰,需要使用重置CSS 確保跨平台的樣式一致。然而,鑑於可用選項過多,選擇正確的重設 CSS 可能會令人畏懼。 html5reset.org 擁有全面的覆蓋範圍,不僅包括重置填充和邊距,還包括解決圖像的潛在...
    程式設計 發佈於2024-11-09
  • 棘手的 Golang 面試問題 - 部分數據競賽
    棘手的 Golang 面試問題 - 部分數據競賽
    Here is another code review interview question for you. This question is more advanced than the previous ones and is targeted toward a more senior aud...
    程式設計 發佈於2024-11-09
  • 如何在 Python 中按列值對散佈圖進行顏色編碼?
    如何在 Python 中按列值對散佈圖進行顏色編碼?
    Python 中按列值對散點圖進行顏色編碼在資料視覺化中,為不同類別分配顏色可以增強清晰度並揭示模式。此功能在 R 的 ggplot2 中很容易使用,但是我們如何使用 pandas 和 matplotlib 在 Python 中實現相同的功能? 更新:Seaborn 增強功能Since 原始答案,S...
    程式設計 發佈於2024-11-09
  • 如何將日期轉換為數位格式以進行繪圖?
    如何將日期轉換為數位格式以進行繪圖?
    將日期轉換為數位格式以進行繪圖當日期以不同格式儲存時,根據日期繪製資料可能具有挑戰性,例如「1991 年1 月2 日。」本文提供了一種將日期轉換為可以輕鬆在x 軸上繪製的數位格式的解決方案。 如問題所述,使用 strftime('%Y%m%d') 轉換日期僅靠這一點可能還不夠。若要解...
    程式設計 發佈於2024-11-09
  • 在 JavaScript 中快取數組長度比直接長度存取更快嗎?
    在 JavaScript 中快取數組長度比直接長度存取更快嗎?
    優化 JavaScript 中的陣列迭代:快取長度與直接長度存取循環數組是 JavaScript 中的基本操作。但最快的方法是什麼?傳統觀點認為,快取數組的長度可以透過避免重複計算來提高效能。然而,有些人認為現代編譯器優化了直接長度存取。 爭論:快取與直接存取傳統上,建議的方法是快取陣列長度: f...
    程式設計 發佈於2024-11-09

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3