【问题标题】:Months on x-axis instead of numberx 轴上的月份而不是数字
【发布时间】:2019-10-02 21:56:41
【问题描述】:
【问题讨论】:
标签:
r
ggplot2
geom-bar
ggplotly
geom-text
【解决方案1】:
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(数据 = 数据帧(
月 = forcats::fct_reorder(month.abb[1:10], 1:10),
数量 = 1:10),
aes(月,数)) +
geom_col()
使用基数 R 将月份转换为因子
ggplot(数据 = 数据帧(
月=因子(1:10,标签=月.abb[1:10]),
数量 = 1:10),
aes(月,数)) +
geom_col()
-
或者您也可以使用数字轴,并带有反映您想要的自定义标签:
ggplot(数据 = 数据帧(
month_num = 1:10,
数量 = 1:10),
aes(month_num, num)) +
geom_col() +
scale_x_continuous(labels = function(x) month.abb[x])
-
或者最简单的方法,您可以使用 Date 或 POSIXct 数据类型。
ggplot(数据 = 数据帧(
月 = 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")