如何使用 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
。为了达到你想要的效果,你需要同时设置 limits
和 breaks
。为了模仿您的图表,我将 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))
我想绘制可变人均贷款的时间演化图。 “年”列中的数据是数字,因此我在名为“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
。为了达到你想要的效果,你需要同时设置 limits
和 breaks
。为了模仿您的图表,我将 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))