如何使用 R 中的 ggplot 绘制时间演变,x 轴上的年份为整数?

How to plot a time evolution with ggplot in R with year on x-axis as integer?

我想绘制可变人均贷款的时间演化图。 “年”列中的数据是数字,因此我在名为“yearint”的数据框中添加了一个新列,我将年从数字转换为整数。不幸的是,x 轴仍然显示带有小数位的年份(见图)。我只想让年份在 x 轴上没有任何小数位。我该怎么做?

#adding a new column to my data frame for "year" as an integer
myDataframe$yearint <- as.integer(myDataframe$year)

#creating a plot
myPlot <- group_by(myDataframe, yearint) %>% summarize(myVariablePlot = mean(myVariable))
timeEvolution <- ggplot(myPlot, aes(x = yearint, y = myVariablePlot)) + xlim(2009,2019) + geom_point(size=3) + geom_line(color = "steelblue") + labs(x = "Year", y = "Average log lending per capita") + ggtitle("Time evolution for lending")
print(timeEvolution)

由于我们没有您的原始数据,我将使用 gapminder 包中的 gapminder 数据集进行演示。

首先看一下df,我们可以确认年份列是整数类型(<int>)。

library(gapminder)
library(tidyverse)

df <- filter(gapminder::gapminder, country == "Afghanistan")

df
# A tibble: 12 × 6
   country     continent  year lifeExp      pop gdpPercap
   <fct>       <fct>     <int>   <dbl>    <int>     <dbl>
 1 Afghanistan Asia       1952    28.8  8425333      779.
 2 Afghanistan Asia       1957    30.3  9240934      821.

然后绘制数据。这里我们需要scale_x_continuous。为了达到你想要的效果,你需要同时设置 limitsbreaks。为了模仿您的图表,我将 breaks 设置为每两年一次,limits 为十年。

ggplot(df, aes(year, lifeExp)) + 
  geom_point(size=3) + 
  geom_line(color = "steelblue") +
  scale_x_continuous(limits = c(1952, 1962), breaks = seq(1952, 1962, 2))