![](/img/trans.png)
[英]How to use R ggplot2 to create a stacked histogram as barcode plot with row-wise color pattern from a R base table
[英]How to create a stacked histogram using base R?
我調查了類似的問題,但沒有運氣。 這是一個示例數據集,但我只使用了Sex和Weight變量。
structure(list(Name = c("A Lamusi", "Juhamatti Tapio Aaltonen",
"Andreea Aanei", "Jamale (Djamel-) Aarrass (Ahrass-)", "Nstor Abad Sanjun"
), Sex = c("M", "M", "F", "M", "M"), Age = c(23L, 28L, 22L, 30L,
23L), Height = c(170L, 184L, 170L, 187L, 167L), Weight = c(60,
85, 125, 76, 64), Team = c("China", "Finland", "Romania", "France",
"Spain"), NOC = c("CHN", "FIN", "ROU", "FRA", "ESP"), Games = c("2012 Summer",
"2014 Winter", "2016 Summer", "2012 Summer", "2016 Summer"),
Year = c(2012L, 2014L, 2016L, 2012L, 2016L), Season = c("Summer",
"Winter", "Summer", "Summer", "Summer"), City = c("London",
"Sochi", "Rio de Janeiro", "London", "Rio de Janeiro"), Sport = c("Judo",
"Ice Hockey", "Weightlifting", "Athletics", "Gymnastics"),
Event = c("Judo Men's Extra-Lightweight", "Ice Hockey Men's Ice Hockey",
"Weightlifting Women's Super-Heavyweight", "Athletics Men's 1,500 metres",
"Gymnastics Men's Individual All-Around"), Medal = c(NA,
"Bronze", NA, NA, NA), Num_Sports = c("Judo", "Ice Hockey",
"Weightlifting", "Athletics", "Gymnastics")), row.names = c("1",
"2", "3", "4", "5"), class = "data.frame")
我需要創建一個顯示男性和女性體重的條形圖。 我使用了ggplot並創建了一個堆積直方圖:
ggplot的代碼很簡單:
ggplot(data = data, aes(x = Weight, fill = Sex)) +
geom_histogram(binwidth = 10, position="stack")
但是,我不知道如何使用基礎R創建類似的圖。我嘗試創建一個具有權重和性別的表格,然后繪制圖形,這是此鏈接的解決方案: 使用R基礎圖形的堆積直方圖
tab <- table(data$Sex,data$Weight)
barplot(tab)
但是由於權重是一個連續變量,它返回了一個包含太多條形圖的圖形 : 圖形中有太多條形圖
我也試過hist(tab)
和hist(data$Weight)
,這顯然也不正確。
如何使用基礎R重新創建圖形? 謝謝!
您的示例數據中沒有足夠的觀察結果,所以我只使用rnorm
:
x <- rnorm(100, 10, 1)
y <- rnorm(100, 12, 1)
使用plot
來疊加直方圖:
h1 <- hist(x, breaks = 10)
h2 <- hist(y, breaks = 10)
par(mar=c(5.1, 4.1, 4.1, 8.1), xpd=TRUE)
plot(h1, col = "Red", xlim = c(6, 16), xlab = "Weight", main = NULL)
plot(h2, col = "Blue", xlim = c(6, 16), add = T)
legend(17, 19,c("f", "m"), fill = c("Red", "Blue"), title = "Sex")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.