R語言餅狀圖


R程式設計語言中有許多庫用來建立圖表。餅狀圖是以不同顏色的圓的切片表示的值。這些切片被標記,並且每個切片對應的數位也在圖表中表示。

在R中,使用將正數作為向量輸入的pie()函式建立餅狀圖。附加引數用於控制標籤,顏色,標題等。

語法

使用R程式設計語言建立餅圖的基本語法是 -

pie(x, labels, radius, main, col, clockwise)

以下是使用的引數的描述 -

  • x - 是包含餅圖中使用的數值的向量。
  • labels - 用於描述切片的標籤。
  • radius - 用來表示餅圖圓的半徑(-1+1之間的值)。
  • main - 用來表示圖表的標題。
  • col - 表示調色盤。
  • clockwise - 是一個邏輯值,指示片是順時針還是逆時針繪製。

例子

使用輸入向量和標籤建立一個非常簡單的餅狀圖。以下指令碼將建立餅圖片並儲存在當前R工作目錄中。假設下是一個統計年齡段的程式碼 -

# Create data for the graph.
x <- c(11, 30, 39, 20)
labels <- c("70後", "80後", "90後", "00後")

# Give the chart file a name.
png(file = "birth_of_age.jpg")

# Plot the chart.
pie(x,labels)

# Save the file.
dev.off()

當我們執行上述程式碼時,會產生以下結果(圖片) -

餅圖示題和顏色

可以通過向函式新增更多引數來擴充套件圖表的特徵。我們將使用引數main向圖表新增標題,另一個引數是col,在繪製圖表時將使用彩虹色托盤。托盤的長度應與圖表的數量相同。 因此我們使用length(x)

例子

以下指令碼將建立一個餅圖圖片檔案(age_title_colours.jpg)並儲存當前R工作目錄中。

# Create data for the graph.
x <- c(11, 30, 39, 20)
labels <- c("70後", "80後", "90後", "00後")

# Give the chart file a name.
png(file = "age_title_colours.jpg")

# Plot the chart with title and rainbow color pallet.
pie(x, labels, main = "出生年齡段 - 餅狀圖", col = rainbow(length(x)))

# Save the file.
dev.off()

當我們執行上述程式碼時,會產生以下結果 -

切片百分比和圖表圖例

我們可以通過建立附加的圖表變數來新增切片百分比和圖表圖例。參考以下程式碼實現 -

# Create data for the graph.
x <-  c(21, 62, 10,53)
labels <- c("70後", "80後", "90後", "00後")

piepercent<- paste(round(100*x/sum(x), 2), "%")

# Give the chart file a name.
png(file = "age_percentage_legends.jpg")

# Plot the chart.
pie(x, labels = piepercent, main = "出生年齡段 - 餅狀圖",col = rainbow(length(x)))
legend("topright", c("70後","80後","90後","00後"), cex = 0.8,
   fill = rainbow(length(x)))

# Save the file.
dev.off()

當我們執行上述程式碼時,會產生以下結果 -

3D餅圖

可以使用附加包來繪製具有3個維度的餅圖。軟體包plotrix中有一個名為pie3D()的函式,用於此效果。參考以下程式碼 -

註: 如果沒有安裝軟體庫:plotrix,可先執行install.packages("plotrix")來安裝。

# Get the library.
library("plotrix")

# Create data for the graph.
x <-  c(21, 62, 10,53)
lbl <- c("70後", "80後", "90後", "00後")

# Give the chart file a name.
png(file = "3d_pie_chart.jpg")

# Plot the chart.
pie3D(x,labels = lbl,explode = 0.1, main = "出生年齡段 - 餅狀圖")

# Save the file.
dev.off()

當我們執行上述程式碼時,會產生以下結果 -