Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何更改x轴刻度以反映另一个变量?_R_Dataframe_Ggplot2 - Fatal编程技术网

R 如何更改x轴刻度以反映另一个变量?

R 如何更改x轴刻度以反映另一个变量?,r,dataframe,ggplot2,R,Dataframe,Ggplot2,我正在使用一个数据框架,其中包括观察的日期和月份: Day Month 1 January 2 January 3 January ... 32 February 33 February 34 February ... 60 March 61 March 等等。我正在ggplot中创建一个折线图,它反映了列wp的逐日值(可以假定为0到1之间的随机值) 因为数据集中有这么多天,我不希望它们反映在x轴记号中

我正在使用一个数据框架,其中包括观察的日期和月份:

Day     Month      
1      January
2      January
3      January
...
32     February
33     February
34     February
...
60     March
61     March
等等。我正在ggplot中创建一个折线图,它反映了列
wp
的逐日值(可以假定为0到1之间的随机值)

因为数据集中有这么多天,我不希望它们反映在x轴记号中。在创建绘图时,我需要参考
day
列,以便查看wp中的逐日变化,但我只希望在x轴标签上显示月份。我可以用
xlab(“月”)
轻松地重命名x轴标题,但我不知道如何更改勾号以仅显示月份。因此,理想情况下,我希望看到“一月”、“二月”和“三月”作为沿x轴的标签

test <- ggplot(data = df, aes(x=day, y=wp)) +
  geom_line(color="#D4BF91", size = 1) +
  geom_point(color="#D4BF91", size = .5) + 
  ggtitle("testex") +
  xlab("Day") +
  ylab("Value") +
  theme_fivethirtyeight() + theme(axis.title = element_text())

test当我将这一天视为实际日期时,我得到了期望的结果:

library(lubridate)
set.seed(21540)
dat <- tibble(
  date = seq(mdy("01-01-2020"), mdy("01-01-2020")+75, by=1), 
  day = seq_along(date), 
  wp = runif(length(day), 0, 1)
)

ggplot(data = dat, aes(x=date, y=wp)) +
  geom_line(color="#D4BF91", size = 1) +
  geom_point(color="#D4BF91", size = .5) + 
  ggtitle("testex") +
  xlab("Day") +
  ylab("Value") +
  theme(axis.title = element_text())


谢谢你,戴夫!我采用了你更一般化的方法,它奏效了。天才
library(lubridate)
set.seed(21540)
dat <- tibble(
  date = seq(mdy("01-01-2020"), mdy("01-01-2020")+75, by=1), 
  day = seq_along(date), 
  wp = runif(length(day), 0, 1), 
  month = as.character(month(date, label=TRUE))
)

firsts <- dat %>% 
  group_by(month) %>% 
  slice(1)


ggplot(data = dat, aes(x=day, y=wp)) +
  geom_line(color="#D4BF91", size = 1) +
  geom_point(color="#D4BF91", size = .5) + 
  ggtitle("testex") +
  xlab("Day") +
  ylab("Value") +
  scale_x_continuous(breaks=firsts$day, label=firsts$month) + 
  theme(axis.title = element_text())