像在facet_grid中一样在facet_wrap中设置“空间”

2024-03-29

我需要不同宽度的刻面;左图显示了实验的动态范围,右图显示了测试条件。有没有办法通过facet_wrap同时获得免费的x和y尺度?在facet_grid中这是可能的,但即使使用scale =“free”,也有固定的y比例。 facet_wrap 允许自由 y 缩放,但 x 缩放似乎是固定的。几年前,同样的问题曾在谷歌页面上发布过,但答案并不令人满意。https://groups.google.com/forum/#!topic/ggplot2/1RwkCcTRBAw https://groups.google.com/forum/#!topic/ggplot2/1RwkCcTRBAw

抱歉,如果这里也重复了;任何帮助将不胜感激!

mdf <- read.table(text="
   strain val     type
1       1 0.0000  sample
2       1 0.0140  sample
3       1 0.0175  sample
4       2 0.0025  sample
5       2 0.0260  sample
6       2 0.0105  sample
7       3 0.0190  sample
8       3 0.0725  sample
9       3 0.0390  sample
10      4 0.0560  sample
11      4 0.0695  sample
12      4 0.0605  sample
13      5 0.0735  sample
14      5 0.1065  sample
15      5 0.0890  sample
16      6 0.1135  sample
17      6 0.2105  sample
18      6 0.1410  sample
19      7 0.1360  sample
20      7 0.2610  sample
21      7 0.1740  sample
22      8 0.3850 control
23      8 0.7580 control
24      8 0.5230 control
25      9 0.5230 control
26      9 0.5860 control
27      9 0.7240 control")

library(ggplot2)

p<-ggplot(mdf, aes(reorder(strain, val), val))+
  labs(x="Strain", y="intensity")+
  geom_boxplot()+
  geom_point()+
  facet_grid(~type, scales ="free", space="free_x")
p
##  free x, fixed y.  why?

q<-ggplot(mdf, aes(reorder(strain, val), val))+
  labs(x="Strain", y="intensity")+
  geom_boxplot()+
  geom_point()+
  facet_wrap(~type, scales ="free")
q
##  free y, fixed x.  why?

我不能绝对确定,但我认为答案是否定的 - 使用 ggplot2 命令。我认为这也不是一个好主意,因为 y 轴上的刻度不同对于读者来说可能并不明显。不过,如果您必须绘制该图,则可以使用 ggplot grob 布局调整 q 图的面板宽度。请注意,第一个面板有两个 x 值,第二个面板有七个 x 值。因此,将面板的默认宽度分别更改为 2null 和 7null。

编辑:更新到 ggplot2 2.2.0

library(ggplot2)
library(grid)
# get mdf data frame from the question

# Your q plot
q <- ggplot(mdf, aes(factor(strain), val)) +
  labs(x = "Strain", y = "intensity") +
  geom_boxplot() +
  geom_point() +
  facet_wrap( ~ type, scales = "free")
q

# Get the ggplot grob
gt = ggplotGrob(q)

# Check for the widths - you need to change the two that are set to 1null
gt$widths
# The required widths are 4 and 8

# Replace the default widths with relative widths:
gt$widths[4] = unit(2, "null")
gt$widths[8] = unit(7, "null")

# Draw the plot
grid.newpage()
grid.draw(gt)

# I think it is better to have some extra space between the two panels
gt$widths[5] = unit(1, "cm")
grid.newpage()
grid.draw(gt)

或者,使用 R 来确定相对宽度和面板。

gt = ggplotGrob(q)

# From 'dfm', get the number of 'strain' for each 'type'.
# That is, the number x-breaks in each panel.
library(dplyr)
N <- mdf %>% group_by(type) %>% 
     summarise(count = length(unique(strain))) %>% 
     `[[`(2)

# Get the column index in the gt layout corresponding to the panels.
panelI <- gt$layout$l[grepl("panel", gt$layout$name)]

# Replace the default panel widths with relative heights.
gt$widths[panelI] <- unit(N, "null")

# Add extra width between panels (assuming two panels)
gt$widths[panelI[1] + 1] = unit(1, "cm")

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

像在facet_grid中一样在facet_wrap中设置“空间” 的相关文章

  • R 中有没有快速替换列值的方法?

    假设我们有一个包含数值的数据框 如下所示 Temperature Height 32 157 31 159 33 139 我想更换Height价值观与pic 00001 pic 00002等等 最终结果是 Temperature Heigh
  • 有条件地将可选组替换为 gsub

    一位用户问我如何做到这一点如何使 ggplot 图例中的选定单词变为斜体 https stackoverflow com questions 76054997 how to italicize select words in a ggplo
  • 将阿拉伯文本分配给 R 变量

    R 无法正确显示阿拉伯文本 当我使用阿拉伯语时 我得到了非常奇怪的东西 这是一个屏幕截图 问题是我想创建一个带有阿拉伯文本的词云 我需要首先解决这个问题 R 版本 R 2 15 2 GUI 1 53 Leopard 版本 64 位 6335
  • ggmap 错误:GeomRasterAnn 是使用不兼容版本的 ggproto 构建的

    我正在使用 ggmap 并收到以下错误 Error GeomRasterAnn was built with an incompatible version of ggproto Please reinstall the package t
  • 使用 gbuffer 在 R 中缓冲(地理)空间点

    我正在尝试缓冲数据集中半径为 100 公里的点 我正在使用该功能gBuffer从包装中rgeos 这是我到目前为止所拥有的 head sampledf postalcode lat lon city province 1 A0A0A0 47
  • 使用 Rcpp 得出斐波那契数列的意外结果

    我刚刚开始使用Rcpp很抱歉 如果我错过了一个简单的步骤或类似的东西 我已经尝试过这个 sourceCpp library Rcpp sourceCpp code include
  • 在多面图中用 N 注释 x 轴

    我正在尝试生成一些按治疗条件和访问次数细分的数字结果的箱线图 每个框中的观察次数都放在图下方 并且也标记了访问次数 这里有一些虚假数据可以用来说明 我举了两个我尝试过但不太有效的例子 library ggplot2 library plyr
  • 在 R 中打印绘图时第一页为空

    我正在尝试创建一个包含多个图的pdf 更具体地说 我想保存我的图 每页 4 个 因此 我在 r 中有以下代码 可以工作 但将页面留空 第一个 pdf Plots plots numeric four in page pdf paper a4
  • r - 从我的应用程序下载shinyapps代码

    我正在尝试从shinyapps io 在另一台电脑上下载我的shiny 应用程序代码 我按照这个例子 https support rstudio com hc en us articles 204536588 从 shinyapps io下
  • 自动将变量名称添加到列表的元素[重复]

    这个问题在这里已经有答案了 我有一个模型列表 为了使代码更易于维护 因此可以方便地添加和删除模型 我希望有一个地方来存储它们及其名称 为此 我必须解决以下命名问题 上游 我生成模型的方式比以下方式效率低 如果是这样压缩的 我会assign他
  • 如何用月份的全名替换数字月份

    使用 tidyverse 包将月份的列更改为完整的实际月份名称 请记住 尽管这些数据只有四个月 但我的真实数据集包含一年中的所有实际月份 我是 tidyverse 的新手 mydata lt tibble camp c Platinum 2
  • 粘贴两个 data.table 列

    dt lt data table L 1 5 A letters 7 11 B letters 12 16 L A B 1 1 g l 2 2 h m 3 3 i n 4 4 j o 5 5 k p 现在我想粘贴列 A 和 B 以获得一个新
  • 访问动态创建的 Shiny 模块的返回值

    我正在寻找构建一个闪亮的应用程序 它动态创建返回简单表单的模块 通过 callmodule 我有两个未解决的问题 希望得到一些指导 首先 当向用户提供多个表单 通过单击按钮 时 先前呈现的表单上的值将恢复为默认值 如何停止这种行为 以便值保
  • 当我用一个观察值运行回归时,为什么“fastLm()”会返回结果?

    为什么fastLm 当我用一项观察进行回归时返回结果吗 下面为什么不lm and fastLm 结果相等吗 library Rcpp library RcppArmadillo library data table set seed 1 D
  • 如何在折线图中显示 Sep-12 格式的数据并抑制网格线和灰色背景?

    我正在努力使日期格式正确 数据已经是melt 格式 数据中有四个变量碰巧共享相同的数据 我只是想绘制一个简单的四线折线图 每个变量作为一条单独的线 并将 Sep 12 显示为最新数据点 我正在使用旧的 ggplot 请随意 我有两个问题 第
  • svyby比例的置信区间

    是否存在创建置信区间的现有函数 从一个svyby比例对象 在我的例子中 是一个二进制项目的交叉表survey包裹 我经常比较各组之间的比例 如果有一个可以提取置信区间的函数 使用调查函数svyciprop而不是confint 下面的示例显示
  • R 中的 huxtable 即使有选项也默认为科学记数法(scipen=999)

    我试图生成像样的桌子 并在过去的一周尝试了很多软件包 我的头在游泳 今天早上开始使用 package huxtable 并试图摆脱科学记数法 x lt mtcars 1 5 1 2 x mpg lt x mpg 10000000 get s
  • 如何在RcppParallel中调用用户定义的函数?

    受到文章的启发http gallery rcpp org articles parallel distance matrix http gallery rcpp org articles parallel distance matrix 我
  • R Leaflet:添加多边形时传递 popupOptions。

    Within addPolygons 有一个popup参数就像addPopups 功能 区别 我认为 是当弹出窗口创建时addPolygons 可以单击多边形内的任意位置来触发弹出窗口 但是如果addPopups 被使用 单个lng and
  • linux下无法安装Cairo包

    我在本地下载该软件包并尝试安装它 但出现此错误 R CMD INSTALL l usr local lib64 R library Cairo 1 5 1 tar gz 我得到他的错误 checking for PNG support in

随机推荐

  • Django-MPTT,如何

    嘿 我刚刚安装了 django mptt 库 但我不知道如何让它工作 我已经添加了 from mptt models import MPTTModel class Category MPTTModel slug models SlugFie
  • 这些未定义的检查在行为上是否相同?

    我似乎有不同的方法 严格平等 检查undefined if something undefined if typeof something undefined if something void 0 可能还有其他人 In a 幸福的场景他们
  • Arduino:连接字符串时崩溃和错误

    我尝试将 AES 256 加密的输出连接到一个字符串 将此字符串与从 Android 手机发送的加密字符串进行比较 基本上 连接似乎有效 但在几次运行后会出现错误 不可读的字符 字符串变得更短而不是更长 或崩溃 它是可重现的 重启后在同一点
  • Youtube Iframe:未调用 onYouTubePlayerAPIReady()

    我有一个带有 iframe 的页面 它加载 youtube 视频 iframe 的 src 在运行时修改 我基于 Rob W 在该主题的不同答案中提供的代码 然后 当加载 iframe 时 执行以下代码 browser load funct
  • 每行的快速列洗牌 numpy

    我有一个包含行的长度超过 10 000 000 的大型数组 我需要单独洗牌这些行 例如 1 2 3 1 2 3 1 2 3 1 2 3 to 3 1 2 2 1 3 1 3 2 1 2 3 我目前正在使用 map numpy random
  • 在 UITextfield 中放置“清除按钮”

    有没有办法定位清除按钮 我想将其向下移动一点 使其与文本输入处于同一水平 有任何想法吗 我的文本字段已经是处理效果的另一个类的子类 包含 clearButtonRect 函数不起作用 IBDesignable open class Hosh
  • 有人可以解释一下这个 C# lambda 语法吗?

    我最近发现了一个静态方法 声明为 public class Foo public static Func
  • SQL Server 排序规则

    我正在读的书上说 SQL Server 支持两种字符数据类型 常规和 Unicode 常规数据类型包括 CHAR 和 VARCHAR Unicode 数据类型包括 NCHAR 和 NVARCHAR 不同之处在于 常规字符每个字符使用一个字节
  • Sinatra 是多线程的吗?

    Sinatra 是多线程的吗 我在其他地方读到 sinatra 默认情况下是多线程的 这意味着什么 考虑这个例子 get multithread do t1 Thread new puts sleeping for 10 sec sleep
  • 与没有 Ajax 或 jQuery on Rails 的情况类似/不同

    我正在尝试实现一个简单的类似 不同函数 我在这里看到的所有示例似乎都适用于 ajax 或 jquery 我还是一个初学者 我也不完全理解 我只想要一个简单的解决方案 我的想法是 我有书 我有用户 用户可以喜欢书籍 所以我通过 Like 模型
  • Rstudio 和闪亮服务器代理设置

    我已经在我的 ubuntu14 上安装了 RStudio Server v0 98 507 和 Shiny Server v1 1 0 10000 我的 rstudio 代理设置已打开nginx 默认值 location rstudio r
  • Excel UDF 加权 RANDBETWEEN()

    好吧 不是真的RANDBETWEEN 我正在尝试创建一个 UDF 来返回数组中数字的索引 其中数字越大 被选择的可能性就越大 我知道如何将概率分配给工作表中的随机数 即使用MATCH 关于概率的总和 有很多东西可以解释这一点 但我想要一个
  • 如何在 php 上执行 SoapClient

    我是soapclient的新手 我尝试在网上做一些研究 也尝试在soap上编码 但似乎这对我来说仍然不起作用 只是徘徊在这里的任何人都可以指出 也许给我一些例子 我如何实际使用的soapclint从以下Web服务器获取反馈 POST web
  • 如何列出指向 git 中特定提交的所有标签

    我已经看到命令了git describe and git name rev但我还没有设法让他们列出多个标签 示例 我有 sha1 48eb354 并且我知道标签 A 和 B 指向它 所以我想要一个 git 命令git something 4
  • 使用 Facebook Graph API 获取纽约市的餐厅列表

    我想使用 Facebook Graph API 获取位于纽约的所有餐厅页面的列表 我已经下载了 PHP SDK 但现在我遇到了这个问题 我只需要餐厅页面的 ID
  • 将自定义对象从客户端 (Jquery) 发送到服务器 (WCF)

    如何将自定义对象从客户端 jquery 发送到服务器 WCF 服务 传递对象的方式是什么 下面是我的代码 当我在萤火虫中看到时 这就是我得到的 请查看屏幕截图 http img88 imageshack us img88 205 54211
  • 自定义图标标记有时无法在 React-Native 中的 MapBox-GL 中工作

    我正在尝试编辑地图标记 如下图所示 这是我创建标记的代码 const MapBoxComponent gt const markers useState title hello coordinates 108 24065199465605
  • 从 C++ 库调用方法时 WPF 中出现 StackOverFlowException

    我在 WPF 中使用 C 库 它是磁条读取器 写入器的 SDK 当我在 WPF 中调用它的方法之一时 10 秒后我收到 StackOverFlowException 从按钮单击事件调用的方法 DllImport MSR API dll st
  • unique.default(x) unique() 中的 R 错误仅适用于向量

    我创建了一个名为state从内置矩阵state x77有两个连续变量 人口和收入 和两个因子变量 地区和面积 我使用以下方法计算了按地区划分的平均收入tapply by aggregate and ave 查看返回对象的格式 但是调用ave
  • 像在facet_grid中一样在facet_wrap中设置“空间”

    我需要不同宽度的刻面 左图显示了实验的动态范围 右图显示了测试条件 有没有办法通过facet wrap同时获得免费的x和y尺度 在facet grid中这是可能的 但即使使用scale free 也有固定的y比例 facet wrap 允许