[英]barplot 2 bars one stacked the other not
盡管存在一些類似的問題和我的研究,但我似乎無法解決我的小問題。 如果答案很簡單並且我很傻,請原諒....我有數據框
df<-data.frame(X = c("Germany", "Chile","Netherlands","Papua New Guinea","Cameroon"), R_bar_Ger = c(1300000000, 620000, 550000, 400000, 320000))
我想生成一個帶有2條的條形圖(x坐標上的國家名稱,y坐標上的國家數量)。 左欄應顯示德國,右欄應與其余4個國家/地區堆疊在一起。
請幫助,並非常感謝您!
解決此問題的一種方法是使用ggplot2
並進行一些數據幀處理。
首先,在您的數據框中添加一列,以指示應在哪個條形圖上繪制一個國家(德國或非德國):
df$bar <- ifelse(df$X == "Germany", 1, 0)
現在,創建圖:
ggplot(data = df, aes(x = factor(bar), fill = factor(X), y = R_bar_Ger)) +
geom_bar(stat = "identity") +
scale_y_sqrt() +
labs(x = "Country Group", title = "Square Root Scale", fill = "Country") +
scale_x_discrete(labels = c("Not Germany", "Germany"))
請注意,如果您不熟悉ggplot2
,則只需要前兩行即可創建繪圖-其余的則是使它看起來不錯。 由於德國比您的其他國家大幾個數量級,因此如果不進行某種規模的擴展,這看起來將不會很好。 ggplot2
具有許多內置的縮放命令,可能值得探討-在這里,我添加了平方根縮放,以便您可以使非德國國家/地區實際上按需堆疊。
ggplot2
條形圖的文檔可以在這里找到-如果您正在尋找功能強大的繪圖工具,那絕對值得一讀。
有很多方法可以給貓咪剝皮,當您學習新工具時,您的確切問題經常會改變。 我可能不會以這種方式設置問題規范,而是盡可能地貼近您的數據和條形圖,實現我認為想要的一種方法是:
with(aggregate(R_bar_Ger ~ X=="Germany", data=df, sum), barplot(R_bar_Ger, names.arg=c("Other", "Germany")))
因此,我們在這里所做的工作是將德國和非德國的數字相加,然后將這些值與合理的x軸標簽一起傳遞給barplot函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.