《R for Data Science (2e)》免費中文翻譯 (第1章) --- Data visualization(1)

寫在前面

本系列推文為《R for Data Science (2)》的中文翻譯版本。所有內容都通過開源免費的方式上傳至Github,歡迎大家參與貢獻,詳細信息見:
Books-zh-cn 項目介紹:
Books-zh-cn:開源免費的中文書籍社區
r4ds-zh-cn Github 地址:
https://github.com/Books-zh-cn/r4ds-zh-cn
r4ds-zh-cn 網站地址:
https://books-zh-cn.github.io/r4ds-zh-cn/


目錄

  • Whole game

  • 1.1 介紹

  • 1.2 第一步

  • 1.3 ggplot2 調用

Whole game

在本書的這一部分,我們的目標是快速為您概述數據科學的主要工具:importing, tidying, transforming, visualizing data,如 Figure 1 所示。我們希望向您展示數據科學的”整個游戲”,只提供足夠的主要要素,讓您能夠處理真實的、簡單的數據集。本書的后續部分將更深入地涵蓋每個主題,擴大您能夠處理的數據科學挑戰的范圍。

Figure 1: 在本書的這一部分,您將學習如何導入(import)、整理(tidy)、轉換(transform)、可視化(visualize)數據。

Figure 1: 在本書的這一部分,您將學習如何導入(import)、整理(tidy)、轉換(transform)、可視化(visualize)數據。

四個章節著重介紹數據科學的工具:

  • 可視化(Visualization)是使用 R 編程的一個很好的起點,因為其收益非常明顯:您可以創建優雅且信息豐富的圖形,幫助您理解數據。在1 Data visualization中,您將深入學習可視化,了解 ggplot2 plot 的基本結構,以及將數據轉化為圖形的強大技術。

  • 僅僅進行可視化通常是不夠的,因此在3 Data transformation,中,您將學習關鍵的動詞(verbs),這些動詞可以幫助您選擇重要的變量、過濾關鍵觀察結果、創建新變量和計算總結。

  • 5 Data tidying中,您將學習關于整潔數據(tidy data)的知識,這是一種一致的存儲數據的方式,使轉換、可視化和建模變得更加容易。您將學習其基本原則,以及如何將數據整理成整潔的形式。

  • 在您進行數據轉換和可視化之前,首先需要將數據導入 R 中。在7 Data import中,您將學習如何將.csv文件導入 R 中的基礎知識。

除了這些章節之外,還有四個章節著重介紹您的 R 工作流程。在 2 Workflow: basics, 4 Workflow: code style, 6 Workflow: scripts and projects 中,您將學習編寫和組織 R 代碼的良好工作流程實踐。這些將為您的長遠成功奠定基礎,因為它們將為您在處理實際項目時保持組織提供工具。最后,8 Workflow: getting help 將教您如何獲取幫助和持續學習。

1.1 介紹

"The simple graph has brought more information to the data analyst's mind than any other device.” — John Tukey

R 有幾種用于制作圖形的系統,但 ggplot2 是最優雅和最多功能的之一。ggplot2 實現了圖形語法(grammar of graphics),這是一套一致的描述和構建圖形的系統。通過 ggplot2,你可以更多更快地學習一個系統,并在許多地方應用。

本章將教您如何使用 ggplot2 可視化數據。我們將從創建一個簡單的散點圖(scatterplot)開始,并使用它來介紹美學映射(aesthetic mappings)和幾何對象(geometric objects)– ggplot2 的基本構建塊。然后,我們將向您展示如何可視化單個變量的分布以及可視化兩個或多個變量之間的關系。最后,我們將介紹如何保存您的圖形并提供故障排除提示。

1.1.1 先決條件

本章重點介紹 ggplot2,它是 tidyverse 中的核心包之一。要訪問本章中使用的數據集、幫助頁面和函數,請運行以下命令加載 tidyverse:

library(tidyverse)
#>?──?Attaching?core?tidyverse?packages?─────────────────────?tidyverse?2.0.0?──
#>???dplyr?????1.1.4???????readr?????2.1.5
#>???forcats???1.0.0???????stringr???1.5.1
#>???ggplot2???3.5.2???????tibble????3.3.0
#>???lubridate?1.9.4???????tidyr?????1.3.1
#>???purrr?????1.0.4?????
#>?──?Conflicts?───────────────────────────────────────?tidyverse_conflicts()?──
#>???dplyr::filter()?masks?stats::filter()
#>???dplyr::lag()????masks?stats::lag()
#>???Use?the?conflicted?package?(<http://conflicted.r-lib.org/>)?to?force?all?conflicts?to?become?errors

這一行代碼加載了核心的 tidyverse,這些包在幾乎每個數據分析中都會使用。它還會告訴您 tidyverse 中的哪些函數與 base R(或其他已加載的包)中的函數存在沖突。

如果您運行此代碼并收到 there is no package called 'tidyverse' 的錯誤消息,則需要先安裝它,然后再次運行 library()

install.packages("tidyverse")
library(tidyverse)

您只需要安裝一個包一次,但每次開始新會話時都需要加載(load)它。

除了 tidyverse 之外,我們還將使用 palmerpenguins 包,其中包含了 penguins 數據集,該數據集包含了帕爾默群島上三個島嶼上企鵝的身體測量數據。還有 ggthemes 包,它提供了一個適用于色盲的安全調色板。

library(palmerpenguins)
#>?
#>?Attaching?package:?'palmerpenguins'
#>?The?following?objects?are?masked?from?'package:datasets':
#>?
#>?????penguins,?penguins_raw
library(ggthemes)

1.2 第一步

企鵝的翼展較長的是否比翼展較短的體重更重還是更輕?您可能已經有了答案,但請盡量給出精確的回答。翼展長度和體重之間的關系是怎樣的?是正相關的嗎?還是負相關的?是線性的嗎?還是非線性的?這種關系是否因企鵝的物種而異?島嶼的差異是否會對關系產生影響?讓我們創建可視化圖表來回答這些問題。

1.2.1 penguins 數據框

您可以使用 palmerpenguins 包中的 penguins 數據框(data frame)來測試您對這些問題的回答(即 palmerpenguins::penguins)。一個 data frame 是一種由變量(列)和觀測(行)組成的矩形集合。penguins 包含 344 個觀測值,由 Dr. Kristen Gorman 和 Palmer Station, Antarctica LTER 搜集提供。

為了方便討論,讓我們定義一些術語:

  • variable 是可以進行測量的數量、特性或屬性。

  • value 是在測量時 variable 所處的狀態。variable 的 value 可能會在每次測量時發生變化。

  • observation 是在類似條件下進行的一組測量(通常在同一時間和同一對象上進行所有測量)。一個 observation 會包含多個 values,每個 value 與不同的 variable 相關聯。我們有時將一個 observation 稱為一個數據點。

  • Tabular data 是一組 values,每個 value 與一個 variable 和一個 observation 相關聯。如果每個 value 都放置在自己的”單元格”中,每個 variable 都在自己的列中,每個 observation 都在自己的行中,那么 Tabular data 就是整潔(tidy)的。

在這個案例中,variable 指的是所有企鵝的屬性,observation 指的是單個企鵝的所有屬性。

在控制臺中鍵入 data frame 的名稱,R 將打印出其內容的預覽。請注意,預覽的頂部顯示著 tibble。在 tidyverse 中,我們使用特殊的 data frames 稱為 tibbles,您很快將學到更多關于它的知識。

penguins
#>?#?A?tibble:?344?×?8
#>???species?island????bill_length_mm?bill_depth_mm?flipper_length_mm
#>???<fct>???<fct>??????????????<dbl>?????????<dbl>?????????????<int>
#>?1?Adelie??Torgersen???????????39.1??????????18.7???????????????181
#>?2?Adelie??Torgersen???????????39.5??????????17.4???????????????186
#>?3?Adelie??Torgersen???????????40.3??????????18?????????????????195
#>?4?Adelie??Torgersen???????????NA????????????NA??????????????????NA
#>?5?Adelie??Torgersen???????????36.7??????????19.3???????????????193
#>?6?Adelie??Torgersen???????????39.3??????????20.6???????????????190
#>?#???338?more?rows
#>?#???3?more?variables:?body_mass_g?<int>,?sex?<fct>,?year?<int>

該 data frame 包含 8 列。如果想要以另一種視圖查看所有變量和每個變量的前幾個觀察值,請使用 glimpse() 函數。或者,如果您在 RStudio 中運行,請使用 View(penguins) 打開一個交互式數據查看器。

glimpse(penguins)
#>?Rows:?344
#>?Columns:?8
#>?$?species???????????<fct>?Adelie,?Adelie,?Adelie,?Adelie,?Adelie,?Adelie,?A…
#>?$?island????????????<fct>?Torgersen,?Torgersen,?Torgersen,?Torgersen,?Torge…
#>?$?bill_length_mm????<dbl>?39.1,?39.5,?40.3,?NA,?36.7,?39.3,?38.9,?39.2,?34.…
#>?$?bill_depth_mm?????<dbl>?18.7,?17.4,?18.0,?NA,?19.3,?20.6,?17.8,?19.6,?18.…
#>?$?flipper_length_mm?<int>?181,?186,?195,?NA,?193,?190,?181,?195,?193,?190,?…
#>?$?body_mass_g???????<int>?3750,?3800,?3250,?NA,?3450,?3650,?3625,?4675,?347…
#>?$?sex???????????????<fct>?male,?female,?female,?NA,?female,?male,?female,?m…
#>?$?year??????????????<int>?2007,?2007,?2007,?2007,?2007,?2007,?2007,?2007,?2…

penguins 中的變量包括:

  1. species: 一只企鵝的物種 (Adelie, Chinstrap, or Gentoo)。

  2. flipper_length_mm: 企鵝的腳鰭長度,以毫米為單位。

  3. body_mass_g: 企鵝的體重,以克為單位。

要了解更多關于 penguins 的信息,請運行 ?penguins 打開其幫助頁面。

1.2.2 最終目標

在本章中,我們的最終目標(ultimate goal)是重新創建以下可視化圖表,顯示企鵝的翼展長度(flipper lengths)和體重(body masses)之間的關系,并考慮企鵝的物種(species)差異。

1.2.3 創建一個 ggplot

讓我們逐步重新創建這個圖表。

在 ggplot2 中,你可以使用函數 ggplot() 開始一個繪圖過程,定義一個繪圖對象,然后向其添加圖層(layers)。ggplot() 的第一個參數是要在圖表中使用的數據集(dataset),因此 ggplot(data = penguins) 創建了一個空圖表(empty graph),準備展示 penguins 數據集,但由于我們尚未告訴它如何進行可視化,所以目前它是空的。這并不是一個非常令人興奮的圖表,但你可以將其看作是一個空白的畫布,你將在其上繪制剩下的圖層。

ggplot(data?=?penguins)

接下來,我們需要告訴 ggplot() 如何將數據的信息進行可視化表示。ggplot() 函數的 mapping 參數定義了數據集中的變量如何映射到圖表的視覺屬性(aesthetics)。mapping 參數總是在 aes() 函數中定義,aes() 函數的 xy 參數指定要映射到 x 軸和 y 軸的變量。目前,我們僅將翼展長度(flipper length)映射到 x aesthetic,將體重(body mass)映射到 y aesthetic。ggplot2 會在 data 參數中尋找映射的變量,此處為 penguins 數據集。

下面的圖展示了添加這些映射后的結果。

ggplot(data?=?penguins,mapping?=?aes(x?=?flipper_length_mm,?y?=?body_mass_g)
)

我們的空白畫布現在具有了更多的結構 – 可以清楚地看到翼展長度(flipper lengths)將顯示在 x-axis 上,體重(body masses)將顯示在 y-axis 上。但是企鵝的觀測值還沒有顯示在圖表上。這是因為我們在代碼中尚未明確指定如何在圖表上表示數據框中的觀測值。

為了實現這一點,我們需要定義一個幾何對象(geom):用于表示數據的圖表中的幾何對象。在 ggplot2 中,可以使用以 geom_ 開頭的函數來獲得這些幾何對象。人們通常通過圖表使用的幾何對象類型來描述圖表。例如,柱狀圖使用柱狀幾何對象(geom_bar()),折線圖使用線條幾何對象(geom_line()),箱線圖使用箱線幾何對象(geom_boxplot()),散點圖使用點幾何對象(geom_point()),等等。

函數 geom_point() 將一層點添加到您的圖表中,從而創建一個散點圖。ggplot2 提供了許多不同類型的幾何函數,每個函數都可以向圖表添加不同類型的圖層(layer)。在本書中,您將學習到許多不同的幾何函數,特別是在 Chapter 9 中。

ggplot(data?=?penguins,mapping?=?aes(x?=?flipper_length_mm,?y?=?body_mass_g)
)?+geom_point()
#>?Warning:?Removed?2?rows?containing?missing?values?or?values?outside?the?scale?range
#>?(`geom_point()`).

現在我們有了一個看起來像是”散點圖(scatterplot)”的圖表。它還不完全符合我們的”最終目標”圖表,但使用這個圖表,我們可以開始回答我們探索的問題:“翼展長度(flipper length)和體重(body mass)之間的關系是什么樣的?” 這個關系似乎是正向的(隨著翼展長度(flipper length)的增加,體重(body mass)也增加),相當線性(點圍繞在一條線附近而不是曲線上),并且中等強度(這條線附近沒有太多的散點)。翼展較長的企鵝通常在體重上也較大。

在我們為這個圖表添加更多圖層之前,讓我們暫停一下并回顧一下我們收到的警告信息(warning message):

Removed 2 rows containing missing values (geom_point()).

我們看到這個警告信息是因為我們的數據集中有兩個企鵝的體重和/或翼展長度值缺失,而 ggplot2 沒有辦法在圖表上表示它們,因為需要同時具備這兩個值。與 R 一樣,ggplot2 遵循這樣的理念:缺失值永遠不應該悄悄地丟失。這種警告通常是您在處理實際數據時最常見的警告之一 – 缺失值是一個非常常見的問題,在本書中您將在 Chapter 18 中學到更多相關知識。在本章的其余圖表中,我們將禁止顯示這個警告信息,以免在每個圖表旁邊都打印出來。

1.2.4 添加美學和圖層

散點圖對于顯示兩個數值變量之間的關系非常有用,但是對于兩個變量之間的任何明顯關系,保持懷疑態度并詢問是否存在其他變量來解釋或改變這種明顯關系的性質總是一個好主意。例如,翼展長度(flipper length)和體重(body mass)之間的關系是否因物種(species)而異?讓我們將物種(species)信息加入到我們的圖表中,看看這是否揭示了這些變量之間明顯關系的其他洞察。我們將使用不同顏色的點來表示不同的物種(species)。

為了實現這一點,我們需要修改 aesthetic 或 geom 部分嗎?如果你猜到了”in the aesthetic mapping, inside of aes()“,那么你已經開始掌握使用 ggplot2 創建數據可視化的方法了!如果沒有,不用擔心。在本書中,你將制作更多的 ggplots,并有更多的機會在制作圖表時檢驗你的直覺。

ggplot(data?=?penguins,mapping?=?aes(x?=?flipper_length_mm,?y?=?body_mass_g,?color?=?species)
)?+geom_point()

當將一個分類變量映射到一個 aesthetic 時,ggplot2 會自動為每個唯一的變量水平(每個物種)分配一個唯一的 aesthetic 值(這里是唯一的 color),這個過程被稱為縮放(scaling)。ggplot2 還會添加一個圖例(legend),解釋哪些值對應于哪些水平。

現在讓我們添加一個額外的圖層:一個顯示體重(body mass)和翼展長度(flipper length)之間關系的平滑曲線。在繼續之前,請回顧上面的代碼,并思考如何將其添加到我們現有的圖表中。

由于這是一個表示數據的新幾何對象,我們將在我們的 point geom 之上添加一個新的幾何層:geom_smooth()。我們將通過 method = "lm" 指定使用線性模型(linear model)來繪制最佳擬合線。

ggplot(data?=?penguins,mapping?=?aes(x?=?flipper_length_mm,?y?=?body_mass_g,?color?=?species)
)?+geom_point()?+geom_smooth(method?=?"lm")

我們成功地添加了線條,但是這個圖形看起來與 Section 2.2.2 提供的圖形不同,Section 2.2.2 的圖形只有一條線表示整個數據集,而不是每個企鵝物種都有獨立的線條。

當在 ggplot() 中定義 aesthetic mappings 時,在全局級別(global level)上,它們會傳遞給繪圖的每個后續幾何層(geom layers)。然而,ggplot2 中的每個幾何函數也可以接受一個 mapping 參數,該參數允許在局部級別(local level)上進行 aesthetic mappings,并將其添加到從全局級別繼承的映射中。由于我們希望點的顏色根據物種進行著色,但不希望將線條分開顯示,所以我們應該僅對 geom_point() 指定 color = species

ggplot(data?=?penguins,mapping?=?aes(x?=?flipper_length_mm,?y?=?body_mass_g)
)?+geom_point(mapping?=?aes(color?=?species))?+geom_smooth(method?=?"lm")

太棒了!我們已經接近我們的最終目標,盡管還不完美。我們仍然需要為每個企鵝物種使用不同的形狀,并改進標簽。

在繪圖中僅使用顏色來表示信息通常不是一個好主意,因為由于色盲或其他色覺差異,人們對顏色的感知有所不同。因此,除了顏色之外,我們還可以將 species 映射到 shape aesthetic 上。

ggplot(data?=?penguins,mapping?=?aes(x?=?flipper_length_mm,?y?=?body_mass_g)
)?+geom_point(mapping?=?aes(color?=?species,?shape?=?species))?+geom_smooth(method?=?"lm")

請注意,圖例(legend)會自動更新以反映點的不同形狀。

最后,我們可以使用 labs() 函數在新的圖層中改進我們繪圖的標簽。labs() 的一些參數可能是不言自明的:title 添加標題,subtitle 添加副標題到繪圖中。其他參數與美學映射相匹配,x 是 x 軸標簽,y 是 y 軸標簽,colorshape 定義圖例的標簽。此外,我們可以使用 ggthemes 包中的 scale_color_colorblind() 函數改進顏色調色板,使其適合色盲人士使用。

ggplot(data?=?penguins,mapping?=?aes(x?=?flipper_length_mm,?y?=?body_mass_g)
)?+geom_point(aes(color?=?species,?shape?=?species))?+geom_smooth(method?=?"lm")?+labs(title?=?"Body?mass?and?flipper?length",subtitle?=?"Dimensions?for?Adelie,?Chinstrap,?and?Gentoo?Penguins",x?=?"Flipper?length?(mm)",?y?=?"Body?mass?(g)",color?=?"Species",?shape?=?"Species")?+scale_color_colorblind()

我們最終有了一個完全符合我們”最終目標”的圖!

1.2.5 練習

  1. penguins 有多少行(rows)?有多少列(columns)?

  2. penguins 數據框中的 bill_depth_mm 變量描述了什么?請閱讀 ?penguins 的幫助文檔來獲取答案。

  3. 創建一個 bill_depth_mm vs. bill_length_mm 的散點圖。也就是說,在 y-axis 上繪制 bill_depth_mm,在 x-axis 上繪制 bill_length_mm。描述這兩個變量之間的關系。

  4. 如果你繪制 species vs. bill_depth_mm 的散點圖,會發生什么?選擇什么樣的幾何圖形可能更好?

  5. 為什么下面的代碼會出錯,如何修復它?

ggplot(data?=?penguins)?+?
geom_point()
  1. geom_point() 中,na.rm 參數的作用是什么?這個參數的默認值是什么?創建一個散點圖,并成功地將該參數設置為 TRUE

  2. 在前面繪制的圖中添加以下說明:“Data come from the palmerpenguins package.” 提示:查看 labs() 的文檔。

  3. 重新創建以下可視化圖形。bill_depth_mm 應該映射到哪個美學屬性?這個映射是應該在全局級別(global level)還是幾何級別(geom level)上完成?

  1. 在腦海中運行此代碼并預測輸出結果。 然后,在 R 中運行代碼并檢查您的預測。

ggplot(data?=?penguins,mapping?=?aes(x?=?flipper_length_mm,?y?=?body_mass_g,?color?=?island)
)?+geom_point()?+geom_smooth(se?=?FALSE)
  1. 這兩張圖看起來會不一樣嗎?為 什么/為什么不?

ggplot(data?=?penguins,mapping?=?aes(x?=?flipper_length_mm,?y?=?body_mass_g)
)?+geom_point()?+geom_smooth()ggplot()?+geom_point(data?=?penguins,mapping?=?aes(x?=?flipper_length_mm,?y?=?body_mass_g))?+geom_smooth(data?=?penguins,mapping?=?aes(x?=?flipper_length_mm,?y?=?body_mass_g))

1.3 ggplot2 調用

隨著我們從這些介紹性部分繼續前進,我們將過渡到 ggplot2 代碼的更簡潔的表達。到目前為止,我們一直非常明確,這在學習過程中是很有幫助的:

ggplot(data?=?penguins,mapping?=?aes(x?=?flipper_length_mm,?y?=?body_mass_g)
)?+geom_point()

通常,函數的前一個或兩個參數非常重要,你應該熟記于心。ggplot() 函數的前兩個參數是 datamapping,在本書的其余部分,我們不再提供這些參數的名稱。這樣做可以節省輸入的工作量,并通過減少額外文本的數量,更容易看出繪圖之間的區別。這是一個非常重要的編程問題,在 Chapter 25 中我們會再次涉及到這個問題。

對先前的繪圖進行更簡潔的重寫可以得到:

ggplot(penguins,?aes(x?=?flipper_length_mm,?y?=?body_mass_g))?+?geom_point()

在將來,您還將學習使用管道操作符 |> 來創建該繪圖,如下所示:

penguins?|>?ggplot(aes(x?=?flipper_length_mm,?y?=?body_mass_g))?+?geom_point()

--------------- 未完待續 ---------------

本期翻譯貢獻:

  • @TigerZ生信寶庫

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/90015.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/90015.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/90015.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

界面組件DevExpress WPF中文教程:Grid - 如何完成節點排序和移動?

DevExpress WPF擁有120個控件和庫&#xff0c;將幫助您交付滿足甚至超出企業需求的高性能業務應用程序。通過DevExpress WPF能創建有著強大互動功能的XAML基礎應用程序&#xff0c;這些應用程序專注于當代客戶的需求和構建未來新一代支持觸摸的解決方案。 無論是Office辦公軟件…

【Prometheus+Grafana篇】監控通過Keepalived實現的MySQL HA高可用架構

&#x1f4ab;《博主主頁》&#xff1a;    &#x1f50e; CSDN主頁__奈斯DB    &#x1f50e; IF Club社區主頁__奈斯、 &#x1f525;《擅長領域》&#xff1a;擅長阿里云AnalyticDB for MySQL(分布式數據倉庫)、Oracle、MySQL、Linux、prometheus監控&#xff1b;并對…

k8s:利用kubectl部署postgis:17-3.5

1.離線環境CPU:Hygon C86 7285 32-core Processor 操作系統&#xff1a;麒麟操作系統 containerd&#xff1a;1.7.27 Kubernetes:1.26.12 KubeSphere:4.1.2 kubekey&#xff1a;3.1.10 Harbor:2.13.1 Postgis:17-3.52.創建并執行postgresql-headless.yaml2.1創建apiVersion: v1…

Mysql(存儲過程)

目錄 介紹 特點 存儲過程創建 系統變量(不重要) 用戶變量 局部變量 if 判斷 參數&#xff08;in, out, inout) case while repeat loop 游標和條件處理程序-handler 存儲函數 為了防止以后忘記&#xff0c;反復去看視頻浪費時間&#xff0c;特寫一篇 介紹 存儲過程…

Effective Python 第14條: 用sort方法的key參數來表示復雜的排序邏輯

一、引言&#xff1a;Python排序功能的重要性 在Python開發中&#xff0c;排序功能是一個常見的需求。無論是處理數據、優化算法&#xff0c;還是提升用戶體驗&#xff0c;排序都是不可或缺的一部分。Python的列表內置了sort方法&#xff0c;提供了靈活的排序功能。然而&#…

react+antd 可拖拽模態框組件

DraggableModal 可拖拽模態框組件使用說明 概述 DraggableModal 是一個基于 dnd-kit/core 實現的可拖拽模態框組件&#xff0c;允許用戶通過拖拽標題欄來移動模態框位置。該組件具有智能邊界檢測功能&#xff0c;確保模態框始終保持在可視區域內。 功能特性 ? 可拖拽移動&…

MySQL的基本操作及相關python代碼

下面為你介紹 MySQL 的基本操作,以及對應的 Python 代碼實現。我會先介紹 SQL 基本操作,再展示如何用 Python 連接 MySQL 并執行這些操作。 一、MySQL 基本操作(SQL 語句) 1. 連接數據庫 bash mysql -u root -p2. 創建數據庫 sql CREATE DATABASE testdb;3. 使用數據…

Armbian(斐訊N1)安裝xfce桌面以及遠程環境

安裝xfce桌面以及vncserver(遠程連接) 安裝xfce桌面 apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils ubuntu的安裝gdm3&#xff0c; apt install gdm3 debian安裝lightdm。 apt install lightdm 安裝vnc server apt-get install tightvncserver 中文字體…

【Oracle】Oracle 11g打補丁時遇到opatch apply命令無法識別

?? 1. 使用完整路徑執行命令 問題原因&#xff1a;若未將$ORACLE_HOME/OPatch加入系統PATH環境變量&#xff0c;直接輸入opatch apply會因系統無法定位命令而報錯。 解決方案&#xff1a; 改用絕對路徑執行&#xff1a; $ORACLE_HOME/OPatch/opatch apply例如&#xff1a; /u…

單例模式詳細講解

一.定義單例模式是一種創建型設計模式&#xff0c;確保一個類只有一個實例&#xff0c;并提供一個全局訪問點特點&#xff1a;1.構造函數和析構函數私有化2.禁用拷貝構造函數和賦值運算符重載&#xff08;delete&#xff09;3.利用靜態成員函數和靜態成員變量來給外界提供訪問二…

KORGym:評估大語言模型推理能力的動態游戲平臺

KORGym&#xff1a;評估大語言模型推理能力的動態游戲平臺 現有評估基準多受領域限制或 pretraining 數據影響&#xff0c;難以精準測LLMs內在推理能力。KORGym平臺應運而生&#xff0c;含50余款游戲&#xff0c;多維度評估&#xff0c;本文將深入解析其設計、框架、實驗及發現…

ISPDiffuser文章翻譯理解

ISPDiffuser: Learning RAW-to-sRGB Mappings with Texture-Aware Diffusion Models and Histogram-Guided Color Consistency翻譯 Type: Conference paper Author: Yang Ren1,4, Hai Jiang1,4, Menglong Yang1,2,?, Wei Li1,2, Shuaicheng Liu3,4,? Select: ???????…

C++線程池執行步驟分析,總結線程池流程

線程池流程總結&#xff1a;1、構造函數中創建線程&#xff0c;并添加到線程池&#xff08;構造函數返回時&#xff0c;線程自動啟動&#xff0c;并停在等待wait&#xff1a;從線程池取出一個任務處&#xff09;&#xff1b; 2、主線程中添加任務&#xff0c;到任務隊列。并用“…

Java 通過 HttpURLConnection發送 http 請求

問題&#xff1a; 在調試 kill 接口的時候&#xff0c;對方的服務用的是 Django RestFramework 框架提供的接口&#xff0c;用 python 請求時得到的內容如下&#xff1a; ? ~ python3 test.py <Response [200]> "true" // 對應的代碼是 print(response, r…

【PTA數據結構 | C語言版】列出連通集

本專欄持續輸出數據結構題目集&#xff0c;歡迎訂閱。 文章目錄題目代碼題目 給定一個有 n 個頂點和 m 條邊的無向圖&#xff0c;請用深度優先遍歷&#xff08;DFS&#xff09;和廣度優先遍歷&#xff08;BFS&#xff09;分別列出其所有的連通集。假設頂點從 0 到 n?1 編號。…

GoLang教程005:switch分支

3.4 Switch分支 在 GoLand&#xff08;其實是 JetBrains 開發的 Go 編程語言 IDE&#xff09;中&#xff0c;switch 是 Go 語言&#xff08;Golang&#xff09; 的一個重要控制結構&#xff0c;用于替代多個 if-else 語句。 ? 特點說明特性說明自動 breakGo 的 switch 語句默認…

uniapp相關地圖 API調用

目錄 一、 注意事項&#xff1a; manifest.json需增加配置 二、獲取用戶收貨地址 [uni.chooseAddress] 三、獲取當前的地理位置、速度 [uni.getLocation] 四、打開地圖選擇位置、查看位置(導航) [uni.chooseLocation] [uni.openLocation] 五、使用騰訊地圖逆地址解析接口實…

Java學習----NIO模型

在 Java 的 I/O 模型中&#xff0c;NIO&#xff08;Non - Blocking I/O&#xff0c;非阻塞 I/O&#xff09;是對 BIO 的重要改進。它為高并發場景提供了更高效的處理方式&#xff0c;在眾多 Java 應用中發揮著關鍵作用。NIO模型的核心在于非阻塞和多路復用&#xff0c;其采用 “…

MySQL計數函數count原理分析

前言 統計表中數據的條數是非常常用的操作,但是咱們常用的InnoDB存儲引擎計數函數是現時統計的,所以會出現性能的問題,這次我準備分享計數函數count的原理,保證之后遇到計數方面的問題都可以輕易靈活的解決 與MyISAM存儲引擎相比,MyISAM存儲引擎是自己記錄了表中數據的條數,但…

Day07_網絡編程20250721_大項目

基本代碼&#xff1a;搭建服務器客戶端&#xff0c;要求服務器使用 epoll 模型客戶端使用多線程服務器打開數據庫&#xff0c;表單格式如下name text primary key pswd text not null客戶端做一個簡單的界面&#xff1a;1&#xff1a;注冊2&#xff1a;登錄無論注冊還是登錄&am…