R - geom_bar带分组标签的分组条形图

时间:2018-05-17 06:58:51

标签: r label bar-chart

我正在组合堆积条形图和折线图。

以下是数据框的可重现代码:

df1 <- data.frame(month = c("Okt 2017", "Okt 2017", "Okt 2017", "Nov 2017", "Nov 2017", "Nov 2017", "Dez 2017", 
                            "Dez 2017", "Dez 2017", "Jan 2018", "Jan 2018", "Jan 2018", "Feb 2018", "Feb 2018", "Feb 2018",
                             "Mrz 2018", "Mrz 2018", "Mrz 2018"), 
                 source = c("a", "b", "c", "a", "b", "c", "a", "b", "c", "a", "b", "c", "a", "b", "c", "a", "b", "c"),
                 value1 = c(sample (c(1000L:4000L),18, replace = FALSE))
                 )

df1$month <- as.yearmon(df1$month)
df1 <- arrange(df1, month)

第二个df:

df2 <- data.frame(month = c("Okt 2017", "Nov 2017", "Dez 2017", "Jan 2018", "Feb 2018", "Mrz 2018"), 
                  value2 = c(sample (c(5000000L:6000000L),6, replace = FALSE))
                  )

df2$month <- as.yearmon(df2$month)
df2 <- arrange(df2, month)

和绘图的代码:

ggplot() +   
geom_bar(data = df1, aes(month, value1*5000000/5000, fill = source), stat="identity", position = "stack") +
geom_point(data = df2, aes(month, value2), color = "blue")+   
geom_line(data = df2, aes(month, value2), group = 1, color = "blue") +  
labs(x = "month", y="value2 (line)") +   scale_y_continuous(sec.axis = sec_axis(~.*5000/5000000, name = "value1 (bars)"), 
                     labels= format_format(big.mark = ".", decimal.mark = ",", scientific = FALSE)) +   
scale_x_yearmon(format = "%Y-%b", n = 6) +  
scale_fill_manual(values= c("darkseagreen4","darkseagreen", "darkseagreen3", "darkseagreen2")) + 
theme_light()

即使我有从10月到3月的月份,R标志着9月而不是12月。有谁知道我在做错了什么?

1 个答案:

答案 0 :(得分:1)

zoo::as.yearmon期望%b,即系统区域设置中缩写的月份名称(例如Jan,Feb等)。

在这种情况下,您似乎使用德语格式的月份,但您的语言环境不同。您可以使用

检查当前设置
Sys.getlocale()


因此,其中一种方法可能是在运行代码之前相应地设置您的语言环境(或者您可以使用具有“英语”格式的月份名称的数据)

Sys.setlocale("LC_TIME", "de_DE")  #Mac
Sys.setlocale("LC_TIME", "German") #Windows