如何在 ggplot2 中按时间顺序排列月份而不是写出月份?

2023-11-26

我正在尝试绘制计数与月份的关系图

ggplot(dat, aes(x=month, y=count,group=region)) +
    geom_line(data=mcount[mcount$region == "West coast", ],colour="black",stat="identity", position="dodge")+
     geom_point(data=mcount[mcount$region == "West coast", ],colour="black", size=2, shape=21, fill="white")+
     theme_bw()+
     theme(legend.key = element_rect(colour = "black")) +
     guides(fill = guide_legend(override.aes = list(colour = NULL)))+
     ggsave("test.png",width=6, height=4,dpi=300)

enter image description here

但我想按时间顺序排列从一月到十二月的月份。我怎样才能把所有月份都写出来呢?

dat <- data.table::data.table(
  region = factor(
    rep(
      c(
        "Appalachians", "Mississippi valley", "Front range", "Flash flood alley",
        "Arizona", "West coast", "Arizona", "Front range"
      ),
      c(12L, 12L, 6L, 12L, 10L, 12L, 2L, 6L)
    ),
    levels = c(
      "West coast", "Arizona", "Front range", "Flash flood alley",
      "Mississippi valley", "Appalachians"
    )
  ),
  month = factor(
    c(
      "Apr", "Dec", "Oct", "Mar", "May", "Jul", "Sep", "Jun", "Nov", "Aug", "Jan",
      "Feb", "Apr", "Mar", "Feb", "Jan", "May", "Dec", "Nov", "Jun", "Jul", "Aug",
      "Oct", "Sep", "Jun", "Aug", "May", "Apr", "Jul", "Sep", "Mar", "Jul", "Jun",
      "Dec", "Apr", "Sep", "May", "Oct", "Jan", "Feb", "Nov", "Aug", "Dec", "Sep",
      "Oct", "Jul", "Feb", "Jan", "Aug", "Nov", "Mar", "Apr", "Jan", "Mar", "Dec",
      "Apr", "Feb", "Nov", "Oct", "Jun", "May", "Jul", "Aug", "Sep", "May", "Jun",
      "Jan", "Feb", "Mar", "Oct", "Nov", "Dec"
    ),
    levels = c("Apr", "Dec", "Oct", "Mar", "May", "Jul", "Sep", "Jun", "Nov", "Aug", "Jan", "Feb")
  ),
  count = c(
    566, 545, 427, 751, 357, 399, 568, 433, 454, 347, 511, 251, 267, 207, 167,
    142, 417, 109, 117, 373, 207, 130, 125, 145, 7, 14, 2, 2, 7, 3, 107, 74, 135,
    48, 80, 53, 117, 125, 59, 53, 103, 30, 21, 18, 8, 22, 26, 37, 20, 5, 11, 1,
    96, 29, 109, 8, 33, 53, 6, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  )
)

使用内置的month.name or month.abb变量以正确的顺序指定因子的水平。在这种情况下,你有缩写,所以month.abb是合适的。

your_data$month = factor(your_data$month, levels = month.abb)

我认为以正确的顺序创建因子是最好的方法,但您也可以使用limits离散尺度的参数(参见?discrete_scale了解更多信息)。

+ scale_x_discrete(limits = month.abb)

Locales

如果您使用的是非英语语言环境,您可以使用一些日期格式构建自己的月份名称常量(基本上是从 Brian Ripley 窃取的)在这个 R 帮助线程中):

 month.name.loc = format(ISOdate(2004, 1:12, 1), "%B")
 month.abb.loc  = format(ISOdate(2004, 1:12, 1), "%b")

如果您想使用与您所在区域不同的月份名称/缩写,withr包很有用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 ggplot2 中按时间顺序排列月份而不是写出月份? 的相关文章

  • 可以明确声明包依赖项的版本吗?

    我倾向于对我编写的代码进行明确而不是隐含的描述 因此 在成功创建自己的包之后 我立即想到的下一件事是如何最好地确保代码的健壮性和可靠性 其中一部分与我的包所依赖的包有关 实际问题 在这方面 是否可以明确声明需要 期望哪个版本的包依赖项 我正
  • 如果“testthat”测试在“R”中失败,则打印自定义诊断信息

    I use a testthat单元测试来检查是否data frame函数返回的结果与我期望它返回的结果相同 如果测试失败 testthat打印一些诊断信息 例如 MyFunction df orig is not identical to
  • 指定 R 中 hist() 中的 bin 数量?

    我尝试指定垃圾箱的数量hist R为10 如下 gt hist x breaks 10 但垃圾箱的数量并不完全是 10 我尝试了几个其他数量的垃圾箱 结果发生了同样的情况 hist says breaks可以指定 给出直方图单元格数量的单个
  • 使用 ggplot2 修改点子集的形状

    我正在尝试绘制一个沿大量维度变化的大型散点图 这是我的起始情节 p lt ggplot mtcars aes wt mpg shape cyl colour gear size carb geom point 使用mtcars数据集 我只是
  • 使用底格里斯河从纬度/经度获取人口普查区

    我有相对较多的坐标 我想获取其人口普查区 除了 FIPS 代码 我知道我可以使用以下命令查找各个纬度 经度对call geolocator latlon 已完成here https stackoverflow com questions 5
  • 如何更新条件公式?

    让我直接进入示例 考虑以下等式 frml lt formula y a b x z 使用这样的公式规范 例如和AER ivreg 我想更新这个公式 使其显示为 frml2 lt y a b c x z w 但是 我不确定如何更新条件标志之前
  • R 中的发散积分可在 Wolfram 中求解

    我知道我以前问过同样的问题 但由于我是新来的 这个问题问得不好而且不可重现 因此我在这里尝试做得更好 如果我只编辑旧的 可能没有人会读它 我有一个想要积分的二重积分 ff lt function g t exp 16 g exp 8 t t
  • 从 R 环境中删除对象

    我正在阅读 Hadley 的 Advanced R 在第 8 章中 他说我们可以使用以下方法从环境中删除对象 rm 但是 移除该物体后我仍然可以看到该物体 这是我的代码 e lt new env e a lt 1 e b lt 2 e a
  • R.matlab/readMat:readTag(this) 中出错

    我正在尝试使用 R matlab 将 matlab 文件读入 R 但遇到此错误 require R matlab r lt readMat file mat verbose T Trying to read MAT v5 file stre
  • 将 VLMC 拟合到很长的序列

    我正在尝试将 VLMC 拟合到最长序列为 296 个状态的数据集 我这样做如下所示 Load libraries library PST library RCurl library TraMineR Load and transform d
  • 在另一个 Rmd 中运行选定的块

    我已经在源 Rmd 文件中运行了分析 并且希望仅使用few来自源的块 我已经看到了一些关于从源 Rmd 中提取所有块的答案来自另一个 Rmd 中的 Rmd 文件的源代码 https stackoverflow com questions 4
  • R 更改小数位且不四舍五入

    gt signif 1 89 digits 2 1 1 9 我想要1 8 这有点笨拙 但它会起作用并保持所有数字 x lt 1 829380 trunc dec lt function x n floor x 10 n 10 n Resul
  • 将函数应用于 3d 数组的每一层,返回一个数组

    假设您有一个包含行 列和层的 3 维数组 A lt array 1 27 c 3 3 3 想象你有一个函数 它接受一个矩阵作为输入并返回一个矩阵作为输出 就像t 如何将该函数应用于数组的每一层 返回与第一层大小相同的另一个数组 我觉得我应该
  • 解析,用三点参数替换

    让我们考虑一个典型的deparse substitute R call f1 lt function u x y print deparse substitute x varU vu varX vx varY vy f1 u varU x
  • 比较 R 中的两个字符向量

    我有两个 ID 字符向量 我想比较这两个字符向量 特别是我对以下数字感兴趣 A和B各有多少个ID 有多少个ID在A中但不在B中 有多少个ID在B但不在A 我还想画维恩图 以下是一些可以尝试的基础知识 gt A c Dog Cat Mouse
  • 带 R 的多彩标题

    我想添加颜色某些词在我的图表标题中 我已经能够在这里找到一些先例 http blog revolutionanalytics com 2009 01 multicolor text in r html 具体来说 我希望用撇号括起来的文本 在
  • R:将 JSON 时间格式转换为 POSIX

    我有一个 JSON 字符串 并将其放入数据框中 我能够做到这一点 但我在使用 apply 函数之一将所有时间字符串转换为 POSIX 格式时遇到问题 See here https stackoverflow com questions 90
  • 使用 dplyr::filter 的整洁方式是什么?

    使用下面的函数调用foo c b 输出以内联方式显示 正确的写作方式是什么df gt filter x gt x 我已经包含了一个使用的示例mutate以整洁的风格与之对比filter foo lt function variables x
  • 替换字符串/文本中“从第 n 次到最后一次”出现的单词

    这个问题以前曾被问过 但尚未得到令提问者满意的答案 https stackoverflow com questions 36368712 how to use stringrs replace all function to replace
  • 如何将 ggrough 图表另存为 .png

    说我正在使用R包裹ggrough https xvrdm github io ggrough https xvrdm github io ggrough 我有这个代码 取自该网页 library ggplot2 library ggroug

随机推荐