删除 geom_tile 中的空白并匹配 geom_vline&hline 位置

2024-04-23

使用时我无法删除矩形之间的空白geom_tile功能。

df <- data.frame(
  x = c(seq(2,16,2),seq(17,39,2)),
  y = c(rep(c(seq(8,26,2),seq(27,45,2)),each=20)),
  z = c(1:400))

library(ggplot2)
ggplot(df, aes(x, y)) +
  geom_tile(aes(fill = factor(z)), colour = "grey50")+
  geom_vline(aes(xintercept=6),linetype="dashed",colour="red",size=1)+
  geom_hline(aes(yintercept=24),linetype="dashed",colour="red",size=1)+
  scale_x_continuous(expand = c(0, 0),breaks=seq(0,50,1))+
  scale_y_continuous(expand = c(0, 0),breaks=seq(0,50,1))+
  theme(legend.position = "none")

直到这里我明白为什么会发生这种情况。为了前进我可以转换x and y因子水平以消除空间!但这一次我失去了geom_vline and geom_hline线。这可能是发生了转换x and y因素水平。

ggplot(df, aes(factor(x), factor(y))) +
  geom_tile(aes(fill = factor(z)), colour = "grey50")+
  geom_vline(aes(xintercept=6),linetype="dashed",colour="red",size=1)+
  geom_hline(aes(yintercept=24),linetype="dashed",colour="red",size=1)+
  #scale_x_continuous(expand = c(0, 0),breaks=seq(0,50,1))+
  #scale_y_continuous(expand = c(0, 0),breaks=seq(0,50,1))+
  theme(legend.position = "none")

当我将因子水平添加到geom_vline&geom_hline收到此错误!

UseMethod(“rescale”) 中的错误:“rescale”没有适用的方法 应用于类“factor”的对象

  ggplot(df, aes(factor(x), factor(y))) +
  geom_tile(aes(fill = factor(z)), colour = "grey50")+
  geom_vline(aes(xintercept=factor(6)),linetype="dashed",colour="red",size=1)+         geom_hline(aes(yintercept=factor(24)),linetype="dashed",colour="red",size=1)+
  #scale_x_continuous(expand = c(0, 0),breaks=seq(0,50,1))+
  #scale_y_continuous(expand = c(0, 0),breaks=seq(0,50,1))+
  theme(legend.position = "none")

这里有两种可能的解决方案。第一个是调整width and height瓷砖的数量:

library(ggplot2)
ggplot(df, aes(x, y)) +
  geom_tile(aes(fill = factor(z)), colour = "grey50", width = 2, height = 2)+
  geom_vline(aes(xintercept=6),linetype="dashed",colour="red",size=1)+
  geom_hline(aes(yintercept=24),linetype="dashed",colour="red",size=1)+
  scale_x_continuous(expand = c(0, 0),breaks=seq(0,50,1))+
  scale_y_continuous(expand = c(0, 0),breaks=seq(0,50,1))+
  theme(legend.position = "none")

第二个是改变值xintercept and yintercept:

ggplot(df, aes(factor(x), factor(y))) +
  geom_tile(aes(fill = factor(z)), colour = "grey50")+
  geom_vline(aes(xintercept=3),linetype="dashed",colour="red",size=1)+
  geom_hline(aes(yintercept=9),linetype="dashed",colour="red",size=1)+
  theme(legend.position = "none")

哪些来自

match(6, unique(df$x))
# [1] 3
match(24, unique(df$y))
# [1] 9

也就是说,现在我们需要指定感兴趣的因子级别的数量。在本例中,6 和 24 都用作因子水平,因此我们可以这样做,但一般来说,此方法可能不起作用,因为您可能需要一条不存在的因子水平的线。

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

删除 geom_tile 中的空白并匹配 geom_vline&hline 位置 的相关文章

  • 将命名参数列表传递给函数?

    我想编写一个小函数来从适当的分布生成样本 例如 makeSample lt function n dist params values lt makeSample 100 unif list min 0 max 10 values lt m
  • R 中具有稳健回归的异常值

    我正在使用lmrobR 中的函数使用robustbase用于稳健回归的库 我会把它用作 rob reg lt lmrob y 0 dat method MM control a1 当我想返回我使用的摘要时summary rob reg 稳健
  • 计算例如具有多列 data.frames 的列表中的平均值

    我有几个 data frames 的列表 每个 data frame 有几列 通过使用mean mylist first dataframe a我可以得到这个 data frame 中 a 的平均值 但是我不知道如何计算列表中存储的所有 d
  • kableExtra 中的 row_spec() 函数不会在 html 输出中创建水平线

    我想在 kableextra 表中的某一行下方添加一条水平线 row spec 函数的参数 hline after 应该在行下方添加水平线 row spec 文档 https www rdocumentation org packages
  • 如何在for循环中引用变量?

    我正在循环访问不同的 data tables 和 data table 中的变量 但我在引用内部变量时遇到问题for loop dt1 lt data table a1 c 1 2 3 a2 c 4 5 2 dt2 lt data tabl
  • 在 R 中创建一个运行计数变量?

    我有一个足球比赛结果的数据集 我希望通过创建一组类似于世界足球 Elo 公式的运行评级来学习 R 我遇到了麻烦 在 Excel 中看似简单的事情在 R 中并不完全直观 例如 4270 个观察中的前 15 个具有必要的变量 date t 1
  • 纵向序列数据的三次样条方法?

    我有一个串行数据 格式如下 time milk Animal ID 30 25 6 1 31 27 2 1 32 24 4 1 33 17 4 1 34 33 6 1 35 25 4 1 33 29 4 2 34 25 4 2 35 24
  • 使用 purrr 迭代替换数据帧列中的字符串

    我想用purrr使用以下命令在数据框列上迭代运行多个字符串替换gsub 功能 这是示例数据框 df lt data frame Year 2019 Text c rep a aa 5 rep a bb 3 rep a cc 2 gt df
  • 使用 pracma::findpeaks 识别持续峰值

    我的语法有问题peakpat内的选项findpeaks内的函数pramcaR 包 v 2 1 1 我使用的是 R 3 4 3 x64 Windows 我希望该函数能够识别可能有两个重复值的峰值 并且我相信该选项peakpat这就是我能做到的
  • 多功能测试仪替代 system.time

    我已经看到 我认为是这样 使用了类似于 system time 的函数 它可以同时评估多个函数的时间并输出一个输出 我不记得它是什么 并且用我正在使用的术语进行互联网搜索并没有得到我想要的响应 有人知道我正在谈论的功能的名称 位置吗 你想要
  • 如何使用 R 计算成为列表中中位数的概率?

    假设我有以下数据集 其中显示了假设实验的每个状态的三个观察结果的列表 state lt c Iowa Minnesota Illinois outcome lt list c 5 11 11 c 3 12 8 c 9 14 2 dat lt
  • 如何使用 usmap 标记数字而不是名称?

    我知道 usmap 有一个选项label in plot usmap 我想标记一些数字 而不是状态名称 我想 usmap 中应该有与州质心坐标相关的数据 但我不知道如何找到它 如果我能得到 坐标然后我可以用它来标记数字geom text 这
  • 在 R 中创建虚拟变量,排除某些情况为 NA

    我的数据看起来像这样 V1 V2 A 0 B 1 C 2 D 3 E 4 F 5 G 9 我想创建一个虚拟变量R where 0 1 1 2 3 4 and NA 0 5 9 应该很简单 有人可以帮忙吗 我们可以转换V2 into a fa
  • 将每列的值乘以 R 中另一个 data.frame 中的权重

    我有两个data frames df and weights 代码如下 df看起来像这样 id a b d EE f 1 this 0 23421153 0 02324956 0 5457353 0 73068586 0 5642554 2
  • 在 R 中使用 lapply 绘制多个数据帧

    我正在尝试使用 lapply 函数绘制多个数据帧 每个数据帧一个图 但是尽管有关此主题的所有帖子我都找不到答案 因为我不断收到错误 图的输出列表为空 我的数据结构如下 df1 lt mtcars gt group by cyl gt tal
  • ggplot2 geom_密度和geom_histogram在一个图中

    如何制作一个所有条形加起来为 1 的直方图 并在适合的上方添加一个密度层 set seed 1234 df lt data frame sex factor rep c F M each 200 weight round c rnorm 2
  • 将阴影区域添加到五分位数之间的直方图中

    All 我有一个包含 2 个直方图的图表 其中我还绘制了代表第 20 40 60 和 80 个百分位数的线条 下面的代码使用虚拟数据重现了类似的图表 data lt rbind data frame x rnorm 1000 0 1 g o
  • 在 r 中的 group_by 之后建模后取消列表列的嵌套

    我想对所有组进行线性回归group by 将模型系数保存在列表列中 然后使用 unnest 扩展列表列 这里我用的是mtcars以数据集为例 注 我想用do here becausebroom tidy 不适用于所有型号 mtcars gt
  • 旋转 Markdown 的表格 pdf 输出

    我想将 pdf 上的表格输出旋转 90 度 我正在使用 Markdown 生成报告并kable循环显示表格 如果可以的话我想继续使用kable因为还有很多其他依赖于它的东西我没有包含在这个 MWE 中 这是一个简单的例子 使用iris数据集
  • 如何仅删除单括号并保留配对的括号

    你好 我亲爱的老师 R 用户朋友们 我最近开始认真学习正则表达式 最近我遇到了一种情况 我们只想保留配对括号 并省略未配对的 这是我的样本数据 structure list t1 c Book Pg 1 Website Online Jou

随机推荐