ggplot折线图中的多行x轴标签

2024-01-11

Edit:该问题已被标记为重复,但回复here https://stackoverflow.com/questions/18165863/ggplot2-labels-of-grouping-values-below-the-plot已尝试但没有成功,因为所讨论的情况是折线图,而不是条形图。应用这些方法会生成一个包含 5 条线的图表,每年 1 条线 - 没有用。投票标记为重复的人是否实际上在该问题提供的示例数据集上尝试了这些方法?如果是这样,请发布作为答案。

原问题:

Excel 数据透视图中有一个功能,允许使用多级分类轴。我正在尝试找到一种方法来执行相同的操作ggplot(或 R 中的任何其他绘图包)。

考虑以下数据集:

set.seed(1)
df=data.frame(year=rep(2009:2013,each=4),
              quarter=rep(c("Q1","Q2","Q3","Q4"),5),
              sales=40:59+rnorm(20,sd=5))

如果将其导入到 Excel 数据透视表,则可以直接创建以下图表:

请注意 x 轴有两个级别,一个用于季度,一个用于分组变量年份。多级轴是否可以ggplot?

注意:有一个带有facets的黑客可以产生类似的东西,但这不是我正在寻找的。

library(ggplot2)
ggplot(df) +
  geom_line(aes(x=quarter,y=sales,group=year))+
  facet_grid(.~year,scales="free")

使用添加新标签annotate(geom = "text",。关闭 x 轴标签的裁剪clip = "off" in coord_cartesian.

Use theme添加额外边距(plot.margin)并删除(element_blank()) x 轴文本 (axis.title.x, axis.text.x)和垂直网格线(panel.grid.x).

library(ggplot2)

ggplot(data = df, aes(x = interaction(year, quarter, lex.order = TRUE), 
                      y = sales, group = 1)) +
  geom_line(colour = "blue") +
  annotate(geom = "text", x = seq_len(nrow(df)), y = 34, label = df$quarter, size = 4) +
  annotate(geom = "text", x = 2.5 + 4 * (0:4), y = 32, label = unique(df$year), size = 6) +
  coord_cartesian(ylim = c(35, 65), expand = FALSE, clip = "off") +
  theme_bw() +
  theme(plot.margin = unit(c(1, 1, 4, 1), "lines"),
        axis.title.x = element_blank(),
        axis.text.x = element_blank(),
        panel.grid.major.x = element_blank(),
        panel.grid.minor.x = element_blank())

另请参阅@eipi10 的精彩回答:带有嵌套 x 变量的两行轴标签(年份低于月份) https://stackoverflow.com/questions/44616530/axis-labels-on-two-lines-with-nested-x-variables-year-below-months

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

ggplot折线图中的多行x轴标签 的相关文章

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

    我倾向于对我编写的代码进行明确而不是隐含的描述 因此 在成功创建自己的包之后 我立即想到的下一件事是如何最好地确保代码的健壮性和可靠性 其中一部分与我的包所依赖的包有关 实际问题 在这方面 是否可以明确声明需要 期望哪个版本的包依赖项 我正
  • 从网络源获取 R 中的数据作为数据框

    我正在尝试使用 RCurl 包将一些空气污染背景数据作为 data frame 直接加载到 R 中 该网站有 3 个下拉框 用于在下载 csv 文件之前选择选项 如下图所示 我试图从下拉框中选择 3 个值 并使用 下载 CSV 按钮将数据作
  • 如何生成向量的所有组合[重复]

    这个问题在这里已经有答案了 假设我有 3 个绿球 2 个橙球和 8 个黄球 我想订购它们 鉴于所有相同颜色的球都是相同的 如何生成所有可能的序列 在 R 中 使用gregmisc 我可以 balls lt c orange orange g
  • 将summary()写入as.data.frame以在ggplot / R中使用

    请查找 af 数据样本t below 我正在使用以下方法进行竞争风险分析etmCIF来自etm package 产生以下结果 这很好 但需要更好的图形 曾经有一个ggtrans etm函数将数据导入ggplot 然而 这个功能显然被删除了
  • R read_excel:libxls 错误:无法解析文件

    我试图使用 readxl read excel 将 xls 文件读入 R 但它给出了以下错误 Error filepath data xls libxls error Unable to parse file 还尝试了 readxl exc
  • R-了解 akima::interp 结果中的 NA 值

    我有以下数据框 ref dat k Intensity Slope 1 0 021467214 33 16 2 0 012444759 33 8 3 0 006079156 33 4 4 0 003792025 33 2 5 0 02276
  • 如何在不循环的情况下添加组ID?

    我有数据框 例如 productid ordernum p1 10 p2 20 p3 30 p4 5 p5 20 p6 8 我想添加另一列 称为 groupid 它将产品按顺序分组在一起 一旦 sum ordernum 达到 30 分配一个
  • 如何更新条件公式?

    让我直接进入示例 考虑以下等式 frml lt formula y a b x z 使用这样的公式规范 例如和AER ivreg 我想更新这个公式 使其显示为 frml2 lt y a b c x z w 但是 我不确定如何更新条件标志之前
  • 使用 dplyr:group_by 将数据帧分成多个子集?

    有没有办法根据 group by 组使用 dplyr 将一个数据帧拆分为数据帧的子集 mtcars gt group by cyl gear gt codes 非常感谢 好吧 并不是你真的想要 但你可以这样做tidyr 即nearly一样的
  • 限制数据框中所有单元格的字符串长度?

    您好 有没有一种方法可以限制 data frame 中所有列的字符串文本大小 而不必循环遍历每一列并一次使用 str trunc 之类的东西 例如下面的数据框 我可以将所有文本大小限制为仅 5 个字符 而不必一次只执行一列吗 如果有 50
  • 当每个记录都是一个段落并且某些记录有 4 个字段而其他记录有 6 个字段时,如何将文本文件读入 R

    如何读取文本文件 其中每条记录都是一个段落 每个换行符表示单独的字段 复杂的是 有些记录有 4 行 有些记录有 6 行 当字段数量的差异为 1 时 DWin 解决了我的问题 但当字段数量差异为 2 时 一切都崩溃了 你可以有一个在这里看看他
  • R 编程:如何计算数据框中两个单元格之间的差异并将它们保存在新列中

    尝试学习 R 并陷入自相关示例中 我想将 x 的差异与 y 的差异进行回归 我在数据框中有 x 和 y 并且希望将 x2 x1 的差值保存在新列 例如 dx 中 我不知道该怎么做 我拥有的 data1 x y 5 3 8 9 3 1 1 5
  • 将数据从 R 导出到 Excel

    我试图将从 R 获得的一些结果导出到 Excel 中 但未成功 我尝试过以下代码 write table ALBERTA1 D ALBERTA1 txt sep t write csv ALBERTA1 ALBERTA1 csv your
  • 如何按 data.table 中的十分位数组计算统计数据

    我有一个 data table 想按组计算统计数据 R set seed 1 R DT data table a rnorm 100 b rnorm 100 这些组应该定义为 R quantile DT a probs seq 1 9 1
  • R 中的字符串作为函数参数

    数据框chocolates列出了糖果的类型以及每种糖果的一组评级 ID sweetness filling crash snickers 0 67 0 55 0 40 milky way 0 81 0 53 0 56 我正在编写一个函数 它
  • 带 R 的多彩标题

    我想添加颜色某些词在我的图表标题中 我已经能够在这里找到一些先例 http blog revolutionanalytics com 2009 01 multicolor text in r html 具体来说 我希望用撇号括起来的文本 在
  • 如何计算嵌套函数中的粘合表达式?

    我正在尝试嵌套一个函数 该函数将两个字符串粘合在一起 该函数使用组合字符串来命名数据帧的列 然而 问题似乎是粘合表达式没有足够早地评估为字符串 我可以 并且应该 强制在将表达式作为参数传递给另一个函数之前对其进行求值吗 library ti
  • R:将 JSON 时间格式转换为 POSIX

    我有一个 JSON 字符串 并将其放入数据框中 我能够做到这一点 但我在使用 apply 函数之一将所有时间字符串转换为 POSIX 格式时遇到问题 See here https stackoverflow com questions 90
  • 如何在R中同时对三个字段进行网络分析

    如何在 R 中同时对三个字段进行网络分析 下面是示例数据以及desired output在最后一栏中 df lt data frame stringsAsFactors FALSE id 1 c ABC ABC BCD CDE DEF EF
  • 具有 dplyr、tidyverse 和 broom 的相关矩阵 - P 值矩阵

    全部 我想使用以下方法从相关矩阵中获取 p 值dplyr 和 或扫帚包 并同时测试多个变量 我知道其他方法 但 dplyr 对我来说似乎更简单 更直观 此外 dplyr 需要关联每个变量以获得特定的 p 值 这使得该过程更容易 更快 我检查

随机推荐

  • WatchKit 上的计时器不会每秒触发

    这个计时器并不是每秒触发一次 当我检查日志和 UI 时 它似乎每 3 4 秒触发一次 func startTimer print start timer timer Timer scheduledTimer timeInterval 1 t
  • 在 Sh/Bash 和 php 中解析配置参数的最佳/最简单方法

    我在每个 php 项目 大约 25 个 中都有一些 sh 脚本 它们可以帮助我完成日常任务 例如部署 存储库同步 数据库导出 导出等 我管理的所有项目的 sh 脚本都是相同的 因此必须有一个配置文件来存储取决于项目的不同参数 example
  • Python:打开现有Excel文件并计算工作表中的行数

    我有一个现有的 Excel 文件 我想加载该文件并获取此表中的行数 以便稍后写入此表的下一行并再次保存 我收到以下错误消息 AttributeError Worksheet object has no attribute nrows 但显然
  • PHPUnit“模拟方法不存在。”当使用 $mock->expects($this->at(...)) 时

    我遇到了 PHPUnit 模拟对象的一个 奇怪问题 我有一个应该调用两次的方法 所以我使用 at 匹配器 这在第一次调用该方法时有效 但由于某种原因 第二次调用该方法时 我得到 模拟方法不存在 我以前使用过 at 匹配器 但从未遇到过这种情
  • Apache/Passenger 服务器上“没有要加载的文件——bundler/setup”

    我正在尝试部署我的第一个 Rails 应用程序的草稿 它在我的本地 WEBRick 服务器上运行良好 但是 在运行 Apache2 和 Passenger 的 Ubuntu VPS 上 当我在浏览器中导航到该应用程序时 我得到 Error
  • 向有限用户大规模部署 Google Apps 脚本支持的电子表格

    我们有100多个用户 我们为他们一一创建了一个谷歌电子表格 并要求他们在电子表格中输入原始数据 当前的工作流程是我们有一个程序将电子表格逐一导出为 CSV 文件并将其导入到我们的后端系统 没关系 现在 我们了解到 Google Apps 脚
  • 在 Java db (Netbeans) 中创建外键

    我在通过 Netbeans 在 Java Db 中创建外键时遇到问题 我很确定我必须使用 SQL 命令将 PLAYERS 表中的属性更改为外键 因为我只能通过界面指定主键 我尝试执行这个命令 ALTER TABLE PLAYERS ADD
  • 无法对未注册的加载器类型执行此操作

    我正在使用散景进行数据可视化 并尝试制作可执行文件 但它显示错误消息 无法对未注册的加载程序类型执行此操作 我尝试过作为解决方案init py 到我的 script py 的目录 subdir 但它不起作用 附言 Win10 Python
  • 命令“python setup.py Egg_info”失败,/tmp/..../ 中的错误代码为 1

    我在安装依赖项时遇到以下错误pip pip9 exceptions InstallationError 命令 python setup py Egg info 失败 错误代码为 1 tmp tmpoons7qgkbuild opencv p
  • 如何让 JavaFX ListView 成为其项目的高度?

    如果我创建一个ListView new ListView lt gt FXCollections observableArrayList 1 2 3 我希望它创建一个包含 3 行的 ListView 但事实并非如此 它创建一个包含 17 行
  • 如何查找解决方案中的所有引用(即所有项目)?

    我们有一个包含很多项目的大型解决方案 有些项目引用相同的 DLL 我需要替换一个 DLL 有没有一种方法可以查看整个解决方案中有哪些参考文献 这样我就不必逐一检查每个项目 我想查看整个解决方案的参考 而不是每个项目的参考 是否可以 只是为了
  • 函数将多列返回为单列而不是多列

    我正在 PostgreSQL 9 04 中编写一个函数 尝试使用将在 select 语句中使用的变量 然后返回结果 我的声明很简单并且有效 但是 所有列都输出到单个列而不是多个列 我的功能 create or replace functio
  • 禁用用户通过电子邮件确认后Keycloak自动登录

    我们将 keycloak KC 与自定义提供程序一起用于注册流程 在注册流程结束时 在将确认电子邮件发送给用户之前 作为默认 KC 功能 我们会禁用该用户 因为它适合我们的用例 当用户单击电子邮件确认时 邮件将被确认并且用户将自动登录 尽管
  • 实例方法和实例变量的线程安全

    我想知道类的每个实例是否都有该类中方法的自己的副本 可以说 我有以下课程MyClass public MyClass private String s1 private String s2 private String method1 St
  • HTML/CSS 中是否有等效的 XAML 网格元素?

    我对 WPF XAML 等有很深的经验 但是 我需要用 HTML CSS JS 创建一些东西 在 WPF 和 Silverlight 中 有一个非常通用的元素 那就是 网格 它本质上是一个托管任何类型的视觉对象的列表 这些对象将根据行 列集
  • 实时音频流套接字卡在浏览器中

    我正在尝试设置一个可以收听多个 私人 流的页面 不幸的是我无法让它运行 我试过使用php在android上打开实时音频流 https stackoverflow com questions 11472997 using php to ope
  • 如何在Python中使用XPath?

    支持 XPath 的库有哪些 有完整的实施吗 图书馆如何使用 它的网站在哪里 libxml2 http xmlsoft org python html具有许多优点 遵守spec http www w3 org TR xpath 积极发展和社
  • Java开发工具包中的jar.exe在哪里? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我从以下位置下载并安装了 JDKJava SE 开发工具包 7 下载 http www oracle com technetwork ja
  • 带有模板函数名称并传递参数和返回值的可变参数模板

    以下来自this https stackoverflow com questions 39558976 variadic templates with template function names 39570187 noredirect
  • ggplot折线图中的多行x轴标签

    Edit 该问题已被标记为重复 但回复here https stackoverflow com questions 18165863 ggplot2 labels of grouping values below the plot已尝试但没