繁体   English   中英

无法在 ggplot2 中绘制正确的 x 轴

[英]Cannot plot the correct x-axis in ggplot2

我正在 R 中使用 ggplot2 绘制以下数据。

dat<-structure(list(Month = c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 
3L, 3L, 3L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 6L, 6L, 6L, 7L, 7L, 7L, 
8L, 8L, 8L, 9L, 9L, 9L, 10L, 10L, 10L, 10L, 11L, 11L, 11L, 11L, 
12L, 12L, 12L, 12L), grp1 = structure(c(1L, 2L, 3L, 4L, 1L, 2L, 
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 1L, 2L, 3L, 
1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 
4L, 1L, 2L, 3L, 4L), .Label = c("(-Inf,2]", "(2,7]", "(7,14]", 
"(14, Inf]"), class = "factor"), n = c(71L, 59L, 36L, 10L, 55L, 
73L, 18L, 10L, 97L, 82L, 22L, 5L, 120L, 79L, 15L, 2L, 140L, 62L, 
15L, 174L, 60L, 11L, 188L, 71L, 2L, 183L, 53L, 2L, 211L, 50L, 
2L, 171L, 69L, 7L, 1L, 98L, 85L, 13L, 6L, 72L, 62L, 24L, 9L)), class    
= "data.frame", row.names = c(NA,-43L))

这是我的脚本:

library(ggplot2)
p<-ggplot(data=test,aes(Month, n, fill = grp1))
p<- p +  geom_col()
p <- p + theme(panel.background=element_rect(fill="white"),
         plot.margin = margin(0.5,0.5,0.5,0.5, "cm"),
         panel.border=element_rect(colour="black",fill=NA,size=1),
         axis.line.x=element_line(colour="black"),
         axis.line.y=element_line(colour="black"),
         axis.text=element_text(size=20,colour="black",family="sans"),
         axis.title=element_text(size=20,colour="black",family="sans"),
         legend.position = "right", legend.key = element_rect(fill = 'white'))
p <- p + scale_y_continuous(limits = c(0,300),breaks=c(seq(0,300,50)), expand=c(0,0))
p <- p + scale_x_discrete(breaks=c(seq(1,12,1)),labels=c("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"),expand=c(0,0))
p <- p + labs(x = "Month", y = "Number of Days")

这是输出:

输出图像

为什么我无法绘制 x 轴值?

如果我不设置 scale_x_discrete,则图将如下所示:

没有 scale_x_discrete 的输出图像

关于如何解决这个问题的任何想法?

我将不胜感激任何帮助。

如果您想要沿 xaxis 的月份名称,那么您可以将as.factor(Month)添加到您的 ggplot 脚本中。 这是一个例子:-

p<-ggplot(data=dat,aes(as.factor(Month), n, fill = grp1))
p<- p +  geom_col()
p <- p + theme(panel.background=element_rect(fill="white"),
               plot.margin = margin(0.5,0.5,0.5,0.5, "cm"),
               panel.border=element_rect(colour="black",fill=NA,size=1),
               axis.line.x=element_line(colour="black"),
               axis.line.y=element_line(colour="black"),
               axis.text=element_text(size=20,colour="black",family="sans"),
               axis.title=element_text(size=20,colour="black",family="sans"),
               legend.position = "right", legend.key = element_rect(fill = 'white'))
p <- p + scale_y_continuous(limits = c(0,300),breaks=c(seq(0,300,50)), expand=c(0,0))
p <- p + scale_x_discrete(breaks=c(seq(1,12,1)),labels=c("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"),expand=c(0,0))
p <- p + labs(x = "Month", y = "Number of Days")
p

这给了你这个:-

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM