0
我正試圖標記ggplot2中分組的barplot中的每個條。每個組按日期彙總,每個日期有4個值(小節)。我已經看到並且實際上擁有我自己的代碼,可以正確標記單個負面和正面的橫條,但我無法獲得分組的條形圖正常工作。這些值始終在欄內結束。如何標記ggplot2中分組的barplot中每個條上的負值和正值
我的數據:
Date <- c("2016-02-19", "2016-02-20", "2016-02-21", "2016-02-22", "2016-02-23", "2016-02-24", "2016-02-25", "2016-02-26", "2016-02-27", "2016-02-28",
"2016-02-29", "2016-03-01", "2016-03-02", "2016-03-03", "2016-03-04")
Date <- as.Date(Date)
Model1 <- c(-0.6, -0.2, 0.1, 0.1, 0.4, -0.2, -1.7, 0.7, 3.6, 2.0, NA, NA, NA, NA, NA)
Model2 <- c(-0.5, -0.2, -0.5, 0.0, 0.0, -1.0, -0.9, 1.6, 3.6, -0.2, 2.1, 7.8, 3.5, -3.4, -8.1)
Model3 <- c(-0.7, 0.0, 0.2, 0.4, 0.8, 0.6, 0.8, -0.4, -0.6, 0.2, 0.1, -0.9, -0.5, 0.1, 0.3)
Model4 <- c(-0.4, -0.1, -0.2, -0.2, -0.7, -1.5, -1.5, -1.5, 0.1, 1.3, 1.1, 0.9, 0.2, -1.1, -1.7)
df <- data.frame(Date, Model1, Model2, Model3, Model4)
df <- melt(df, id.vars="Date", value.name="Value", variable.name = "model")
的代碼我使用繪製:
dfplot <- ggplot(df, aes(x = Date, y = Value, fill = model)) +
geom_bar(position = "dodge",stat = "identity", aes(fill= model)) +
scale_fill_manual(values = c("red","blue", "dark green", "purple"))+
geom_text(aes(label= Value),position = position_dodge(width = 0.9),
vjust = ifelse(df[,3]>=0, -0.5, 1) , size= 3)
正如你所看到的,值標籤不在頂部(或底部)的每個酒吧,我願意。有些是,但很多都不是。
當談到帶有正值的帶標籤分組的條形圖時,我看到使用position= position_dodge(width=0.9)
是最好的方法,我同意這個例子。我用它獲得了最有成效的結果,但它並不完美。
我認爲我的問題在於我的vjust ifelse聲明。如果我將vjust作爲-0.5而不是ifelse語句,則所有正面的橫條實際上都標有正確的標籤,但負值仍在橫條內,但圖像實際上看起來比上面顯示的更乾淨。
有關如何解決此問題的任何想法?
感謝
完美!非常感謝你。 – user3720887