我有一个数据框
df <-data.frame(apport=c("Min 1", "Min 2", "Org 2017","Org 2017","Org 2017",
"Org 2017","Org 2017","Org 2017","Org 2017","Org 2017",
"Org 2017","Org 2017"), periode_ap=c("Mai_32","Jui_34",
"Avr_30", "Avr_31","Avr_31","Avr_31","Mai_32","Mai_32","Mai_32",
"Mai_33","Mai_33","Mai_33"))
我做了一个ggplot
ggplot(df, aes(x=periode_ap, color=apport))+geom_density()
但是我想在x轴上具有此列表中的刻度:
list<-c("Jan_0", "Jan_1", "Fev_2", "Fev_3","Mar_4", "Mar_5", "Avr_6", "Avr_7", "Mai_8", "Mai_9", "Jui_10", "Jui_11", "Jul_12", "Jul_13", "Aou_14", "Aou_15", "Sep_16", "Sep_17", "Oct_18", "Oct_19", "Nov_20","Nov_21", "Dec_22", "Dec_23", "Jan_24", "Jan_25", "Fev_26", "Fev_27", "Mar_28", "Mar_29", "Avr_30","Avr_31", "Mai_32", "Mai_33", "Jui_34", "Jui_35", "Jul_36", "Jul_37", "Aou_38",
"Aou_39", "Sep_40", "Sep_41", "Oct_42", "Oct_43", "Nov_44", "Nov_45", "Dec_46", "Dec_47")
我的数据中有一个从Jan_0到Dec_47的周期,而不是从Avr_30到Jui_34的周期,如果可以的话,谢谢
答案 0 :(得分:2)
似乎您在围绕答案跳舞。问题在于您不能使用类似xlim('Jan_0','Dec_47')
之类的东西,因为您的x轴刻度是离散的而不是连续的。 ggplot2
不知道应该如何组织您的数据,因此它只是默认为数据帧中的数据,并且不知道如何推断回“ Jan_0”或进一步推断到“ Dec_47”。 (顺便说一句...我也不...)。
因此,如何扩展图表的答案是双重的:
(1)告诉ggplot2
数据的组织方式。我将df$periode_ap
设置为一个因素,并指出级别是您的列表。
lev_periode_ap <- list<-c("Jan_0", "Jan_1", "Fev_2", "Fev_3","Mar_4", "Mar_5", "Avr_6", "Avr_7", "Mai_8", "Mai_9", "Jui_10", "Jui_11", "Jul_12", "Jul_13", "Aou_14", "Aou_15", "Sep_16", "Sep_17", "Oct_18", "Oct_19", "Nov_20","Nov_21", "Dec_22", "Dec_23", "Jan_24", "Jan_25", "Fev_26", "Fev_27", "Mar_28", "Mar_29", "Avr_30","Avr_31", "Mai_32", "Mai_33", "Jui_34", "Jui_35", "Jul_36", "Jul_37", "Aou_38",
"Aou_39", "Sep_40", "Sep_41", "Oct_42", "Oct_43", "Nov_44", "Nov_45", "Dec_46", "Dec_47")
df$period_ap <- factor(df$periode_ap, levels=lev_periode_ap)
(2)告诉ggplot2
处理这些级别。现在,ggplot2
知道df$periode_ap
是序数,它可以告诉“最高的” ”,什么是“最低”,并且严格地所有这些级别的顺序。我们需要表明我们希望通过scale_x_discrete(labels=...)
显示所有级别,但重要的是,我们要确保ggplot2
不会删除没有数据的任何级别。幸运的是,我们可以使用drop=
参数。在theme()
元素进行一些更改之后,您将获得以下信息:
ggplot(df, aes(x=period_ap,color=apport))+ theme_bw() +
geom_density() +
scale_x_discrete(labels=lev_periode_ap, drop=FALSE) +
theme(axis.text.x=element_text(angle=90, vjust=0.5, hjust=1))
现在,似乎我们缺少足够的数据点,无法显示“最小1”和“最小2”的颜色,但是您提出的问题就有了答案。