[英]Sorting Y Axis Values ggplot
我正在嘗試創建一個點圖,其中在我的Y軸上從AZ到底部列出了國家。 獎牌數將是四個地塊中每個地塊的X軸,金,銀,銅牌和總計地塊各一個。 當然,ggplot傾向於從ZA中繪制國家,盡管閱讀了所有有關該問題的信息,但我尚未解決該問題。 我非常感謝在編碼和理解方面的任何直接幫助。
mdat <- melt(raw, value.name = "Count", variable.name = "Place", id.var = "Country")
mdat[, "Place"] <- factor(mdat[, "Place"], levels=c("Gold", "Silver", "Bronze", "Total"))
##I know my problem is likely on or around the above line ##
plot1 <- ggplot(mdat, aes(x = Count, y = Country, colour = Place)) +
geom_point() +
facet_grid(.~Place) + theme_bw()+
scale_colour_manual(values=c("#FFCC33", "#999999", "#CC6600", "#000000"))
print(plot1)
Algeria Gold 4
Argentina Gold 5
Armenia Gold 1
Algeria Silver 2
Argentina Silver 5
Armenia Silver 2
Algeria Bronze 4
Argentina Bronze 2
Armenia Bronze 0
在繪制之前,您必須對Country
級別進行排序。 另外,您提供的數據沒有Total
級別。 以下方法應會給您所需的結果:
讀取數據(包括Place
變量的Total
水平):
mdat <- read.table(text="Country Place Count
Algeria Gold 4
Argentina Gold 5
Armenia Gold 1
Algeria Silver 2
Argentina Silver 5
Armenia Silver 2
Algeria Bronze 4
Argentina Bronze 2
Armenia Bronze 0
Algeria Total 10
Argentina Total 12
Armenia Total 3", header=TRUE)
排序Country
變量的級別:
mdat$Country <- factor(mdat$Country,levels=sort(unique(mdat$Country),decreasing=TRUE))
按照正確的順序獲取Place
變量:
levels(mdat$Place) <- c("Bronze"=3,"Gold"=1,"Silver"=2,"Total"=4)
mdat$Place <- as.numeric(mdat$Place)
mdat$Place <- as.factor(mdat$Place)
levels(mdat$Place) <- c("Gold","Silver","Bronze","Total")
創建圖:
ggplot(mdat, aes(x = Count, y = Country, colour = Place)) +
geom_point(size=4) +
facet_grid(.~Place) + theme_bw()+
scale_colour_manual(values=c("#FFCC33","#999999","#CC6600","#000000"))
給出以下圖:
當您已經融化數據時,我懷疑raw
數據幀中沒有Total
變量。 您可以使用以下方法進行計算:
raw$Total <- rowSums(..specify the Gold, Silver & Bronze columns here..)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.