geom_vline 与字符 xintercept

2024-01-02

我有一些 ggplot 代码在 0.8.9 中运行良好,但在 0.9.1 中不行。

我将把数据绘制在theDF并想在以下位置绘制一条垂直线xintercept="2010 Q1." theGrid仅用于创建theDF.

theGrid <- expand.grid(2009:2011, 1:4)
theDF <- data.frame(YrQtr=sprintf("%s Q%s", theGrid$Var1, theGrid$Var2), 
                    Minutes=c(1000, 2200, 1450, 1825, 1970, 1770, 1640, 1920, 1790, 1800, 1750, 1600))

使用的代码是:

g <- ggplot(theDF, aes(x=YrQtr, y=Minutes)) + 
         geom_point() + 
         opts(axis.text.x=theme_text(angle=90))

g + geom_vline(data=data.frame(Vert="2010 Q2"), aes(xintercept=Vert))

同样,这在带有 ggplot2 0.8.9 的 R 2.13.2 中工作得很好,但在带有 ggplot2 0.9.1 的 R 2.14+ 中却不起作用。

解决方法是:

g + geom_vline(data=data.frame(Vert=4), aes(xintercept=Vert))

但这对于我的问题来说并不是一个好的解决方案。

也许是在玩弄scale_x_discrete可能有帮助?


你可以试试这个:

g + geom_vline(aes(xintercept = which(levels(YrQtr) %in% '2010 Q1')))

这避免了为所选因子水平创建虚拟数据框的需要。 which() 命令返回与 vlines 关联的因子 level[s] 的索引(或索引,如果 %in% 运算符的右侧是向量)。

对此的一个警告是,如果某些类别没有出现在您的数据中并且您使用drop = TRUE在比例尺中,则线条将不会显示在正确的位置。

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

geom_vline 与字符 xintercept 的相关文章

  • 如何根据子字符串匹配选择 R data.table 行(类似于 SQL)

    我有一个带有字符列的 data table 并且只想选择其中包含子字符串的行 相当于SQLWHERE x LIKE substring E g gt Months data table Name month name Number 1 12
  • R 数据框中的重复行

    我正在尝试使用下面的代码复制数据框中的行 但是 我发现它很慢 duprow df 1 for i in 1 2000 print i df rbind df duprow 有更快的方法吗 您可以使用rep 例如对于数据框第 1 行的 5 个
  • 将可变参数传递给plot()函数

    我正在写一个包装器plot它可以自动执行一些我发现自己经常执行的任务 示例代码片段可能如下所示 function myplot x y varargin plot x y varargin xlabel x axis ylabel y ax
  • 如何在R中绘制堆积柱形图?

    有谁知道如何使用 R 绘制由超过 1 个变量堆叠的列的直方图 就像excel中的 堆积柱形图 一样 谢谢你 我假设您确实想要一个条形图而不是直方图 在这种情况下 barplot从标准图形或barchart格子包中的两者都可以做到 或者使用
  • Gnuplot:如何跳过矩阵输入中的列进行绘图?

    我有以下形式的数据文件 unimportant1 unimportant2 unimportant3 matrixdata i 1e4 2e5 3e2 1 2 3 4 5 2e3 1e1 7e3 5 4 3 2 1 2e3 1e4 4e2
  • 通过环境.yml 文件使用 conda 安装 R 包

    通常我会创建 conda 环境 例如 conda env create f environment yml conda activate env name 通常我使用 Python 工作 典型的environment yml简单的文件可能看
  • 在 R 中,将一列值与所有其他列进行比较

    我对 R 非常陌生 我有一个问题对于这里的专家来说可能非常简单 假设我有一个表 sales 其中包含 4 个客户 ID 123 126 和 4 个产品 A B C D ID A B C D 123 0 1 1 0 124 1 1 0 0 1
  • 在 ggplot2 中隐藏单个几何图例

    我将相同的变量 颜色 映射到两个不同几何图形中的颜色 我希望它们要么出现在单独的图例中 DHJ 和 EFI 要么最好完全跳过第二个图例 对于 E F 和 I 目前 R 将两者混合在一起 并给我一个图例 其中按字母顺序列出了 DEFHIJ 所
  • 如何为 R 中接下来的 2 个单元格复制相同的列值[重复]

    这个问题在这里已经有答案了 我正在尝试使用 R 为列中接下来的 2 个单元格复制相同的列值 我有以下形式的数据框 Time World Cate Data 1994 Africa A 12 1994 B 17 1994 C 22 1994
  • 根据值绘制具有条件颜色的折线图

    我想绘制折线图 根据值 它应该改变它的颜色 我发现的是 plot sin seq from 1 to 10 by 0 1 type p col ifelse sin seq from 1 to 10 by 0 1 gt 0 5 red ye
  • 在 R 中提取栅格的最快方法(提高我的可重现代码的时间)

    我想知道我是否已最大化提取栅格中某个点周围缓冲区域平均值的速度 本地的性能可以进一步提高吗 I use parallel mclapply已经 我知道我可以通过在集群上设置和运行它来获得进一步的收益 使用集群或获得更多的CPU不是我正在寻找
  • 如何使 quarto html 文档使用全屏宽度?

    我正在使用 R 创建一个四开 html 文档并将其发布到 rpubs com 上的网络上 该文档仅使用窗口的中间三分之一 而将左侧和右侧的三分之一留为空白 我怎样才能告诉四开使用整个窗口 这是一个非常简单的可重现示例 由于某种原因 它确实使
  • 是否有一个 R 函数可以获取 n 个对象取 k P(n,k) 的排列数?

    或者我必须给予 P nk lt factorial n factorial n k or P nk lt choose n k factorial k 谢谢 我不知道任何现有的功能 如果 n 较大 您的第一个建议将会失败 当编写为函数时 你
  • 张量流:RStudio 中的 [NOT FOUND] 错误

    我尝试在中运行以下代码RStudio library tensorflow x data lt runif 100 min 0 max 1 y data lt x data 0 1 0 3 W lt tf Variable tf rando
  • 在 ggplot2 中使用 FontAwesome 作为点的替代品

    这可能是一个相当基本的事情 但我似乎找不到有意义的答案 我正在尝试使用 R 中的 fontawesome 包将表情符号用作 ggplot2 图表中的点 但我很难弄清楚如何为每个变量分配不同的表情符号 这是一些示例数据 我们将数据框称为 样本
  • 在 RStudio 中自动格式化 R 代码

    RStudio 中是否有自动格式化代码的可能性 I found this https stackoverflow com questions 3017877 tool to auto format r code 但未与RStudio连接 还
  • multidplyr :将函数分配给集群

    参见下面的工作解决方案 我想使用 multidplyr 并行化函数 calculs R f lt function x return x 1 main R library dplyr library multidplyr source ca
  • 读取时 R 中的内存错误.xlsx

    我正在使用以下 R 代码 也利用 Java 参数来增加内存 library xlsx options java parameters Xmx1g library XLConnect NiVe lt read xlsx version1 xl
  • update() 具有局部协变量的函数内的模型

    我需要从函数内部更新回归模型 理想情况下 该函数应该适用于任何类型的模型 lm glm multinom clm 更准确地说 我需要添加函数内部定义的一个或多个协变量 这是一个例子 MyUpdate lt function model ra
  • 将多个ggplot2图保存为列表中的R对象并在网格中重新显示

    我想在大型 for 循环期间将多个绘图 使用 ggplot2 保存到列表中 然后随后在网格中显示图像 使用 grid arrange 我已经尝试了两种解决方案 1 将其存储在列表中 如下所示 pltlist qplot lt qplot 然

随机推荐