x 轴上的月份而不是数字
Months on x-axis instead of number
我想将 x 轴上的数字转换为月份,我成功了,但我希望月份按时间顺序而不是字母顺序排列。
我使用了以下代码:
temp %>%
ggplot(aes(month.abb[MoSold], fill = SalePrice)) +
geom_bar() +
scale_y_continuous(labels = number) +
xlab("Month") +
theme_bw()
以上代码生成下图months in alphabetical order.
相反,我希望图形看起来像名称而不是数字 graph with chronological order without month name
month.abb[]
生成字符,除了字母顺序之外,它们在 R 中没有固有的顺序,这是 ggplot 显示它们的方式。
ggplot(data = data.frame(
months = month.abb[1:10],
num = 1:10),
aes(months, num)) +
geom_col()
要按预期顺序查看它们,至少有 3 个选项:
将month.abb
转换为factor
数据类型,可以指定顺序。
使用 forcats
包
将月份转换为因数
ggplot(数据=data.frame(
个月 = forcats::fct_reorder(month.abb[1:10], 1:10),
数 = 1:10),
aes(月数, 数)) +
geom_col()
使用基数 R 将月份转换为因数
ggplot(数据=data.frame(
月 = 因子(1:10,标签 = month.abb[1:10]),
数 = 1:10),
aes(月数, 数)) +
geom_col()
或者您可以交替使用数字轴,自定义标签反映您的需要:
ggplot(数据=data.frame(
month_num = 1:10,
数 = 1:10),
aes(month_num, num)) +
geom_col() +
scale_x_continuous(标签=函数(x)month.abb[x])
或者最简单的方法是,您可以使用 Date 或 POSIXct 数据类型。
ggplot(数据=data.frame(
month = seq.Date(as.Date("2019-01-01"), as.Date("2019-10-01"), by = "month"),
数 = 1:10),
aes(月, 数)) +
geom_col() +
scale_x_date(date_breaks = "1个月",
minor_breaks = NULL,date_labels = "%b")
我想将 x 轴上的数字转换为月份,我成功了,但我希望月份按时间顺序而不是字母顺序排列。
我使用了以下代码:
temp %>%
ggplot(aes(month.abb[MoSold], fill = SalePrice)) +
geom_bar() +
scale_y_continuous(labels = number) +
xlab("Month") +
theme_bw()
以上代码生成下图months in alphabetical order.
相反,我希望图形看起来像名称而不是数字 graph with chronological order without month name
month.abb[]
生成字符,除了字母顺序之外,它们在 R 中没有固有的顺序,这是 ggplot 显示它们的方式。
ggplot(data = data.frame(
months = month.abb[1:10],
num = 1:10),
aes(months, num)) +
geom_col()
要按预期顺序查看它们,至少有 3 个选项:
将
month.abb
转换为factor
数据类型,可以指定顺序。使用
将月份转换为因数forcats
包ggplot(数据=data.frame( 个月 = forcats::fct_reorder(month.abb[1:10], 1:10), 数 = 1:10), aes(月数, 数)) + geom_col()
使用基数 R 将月份转换为因数
ggplot(数据=data.frame( 月 = 因子(1:10,标签 = month.abb[1:10]), 数 = 1:10), aes(月数, 数)) + geom_col()
或者您可以交替使用数字轴,自定义标签反映您的需要:
ggplot(数据=data.frame( month_num = 1:10, 数 = 1:10), aes(month_num, num)) + geom_col() + scale_x_continuous(标签=函数(x)month.abb[x])
或者最简单的方法是,您可以使用 Date 或 POSIXct 数据类型。
ggplot(数据=data.frame( month = seq.Date(as.Date("2019-01-01"), as.Date("2019-10-01"), by = "month"), 数 = 1:10), aes(月, 数)) + geom_col() + scale_x_date(date_breaks = "1个月", minor_breaks = NULL,date_labels = "%b")