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()
當我們執行上述代碼時,會產生以下結果 -