R:按比例缩放 ggplot2、点阵或基本 R 图的函数

2024-07-04

在 R 中,我总是觉得很烦人的是,基本 R、lattice 和 ggplot2 绘图都使用文本和绘图符号大小的绝对点大小。

这意味着,如果您增加绘图窗口的大小以获取填充页面的图表

windows(width=5,height=5);qplot(Sepal.Length, Petal.Length, data = iris, color = Species, size = Petal.Width, alpha = I(0.7))

to

windows(width=10,height=10);qplot(Sepal.Length, Petal.Length, data = iris, color = Species, size = Petal.Width, alpha = I(0.7))

文本和绘图符号的相对比例相对于其余部分发生变化。 这同样适用于基本 R 和格子图。

在我正在编写的一些图形导出函数的上下文中,我想知道是否可以编写一个函数来获取当前图形设备的输出(可以使用recordPlot()),并按任意百分比缩放所有绘图符号和文本以及线宽,从而允许以任何尺寸导出图形,同时仍保持相同的外观? IE。一个按比例将整个图表缩放到更大或更小的尺寸同时保持外观相同的函数?

PS 同样需要能够在高 DPI 4K 屏幕上缩放 RStudio 绘图窗口并仍然使其清晰(现在 RStudio 使用像素加倍,但这会使绘图窗口看起来非常模糊,并且还会导致与 Cleartype 结合使用时出现问题)窗户,导致彩色边纹)。 https://stackoverflow.com/questions/32411080/r-rstudio-graph-scaling-issues-fuzziness-on-high-dpi-screens


由于某种原因,点大小被编码为字体大小,因此将其转换为自动缩放的单位似乎并不容易。如果您知道要应用什么缩放比例,那么以下内容可能会有所帮助

library(ggplot2)
p <- qplot(Sepal.Length, Petal.Length, data = iris, 
           geom=c("point","line"),
           color = Species, size = Petal.Width, alpha = I(0.7))

library(gtable)
library(grid)

g <- ggplotGrob(p)
pts <- g$grobs[[4]][["children"]][[2]] # geom_point layer
lns <- g$grobs[[4]][["children"]][[3]] # geom_line layer
g$grobs[[4]][["children"]][[2]] <- editGrob(pts, size=1.2*pts$size)
gp <- modifyList(lns$gp, list(lwd=1.2*lns$gp$lwd))
g$grobs[[4]][["children"]][[3]] <- editGrob(lns, gp=gp)

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

R:按比例缩放 ggplot2、点阵或基本 R 图的函数 的相关文章

  • .jfindClass(as.character(driverClass)[1]) 中的错误:找不到类

    gt cassdrv lt JDBC org apache cassandra cql jdbc CassandraDriver list files C Users VRavimurugan GSIN AppData Roaming Ra
  • R Markdown 水平规则也适用于 LaTeX pdf?

    我知道 是 Pandoc 的 Markdown 水平线 这条水平线在 HTML 上看起来不错 但如果我将 Markdown 编织成 pdf 则水平线仅占 pdf 宽度的一半 并且居中 这种组合只会让水平尺看起来很丑 如何在 R Markdo
  • 用小平面绘制 ggplot2 中分布的分位数

    我目前正在 ggplot 中绘制多个回归模型的一阶差分的多个不同分布 为了便于解释差异 我想标记每个分布的 2 5 和 97 5 百分位 由于我将制作相当多的绘图 并且由于数据按二维 模型和类型 分组 因此我想在 ggplot 环境中定义并
  • R 中是否有具有超过 3 个参数预测变量的 loess 实现或达到类似效果的技巧?

    召集所有专家局部回归 and or R 我遇到了标准的限制loess函数于R并希望您有一些建议 目前的实施情况仅支持 1 4 个预测器 让我列出我们的应用场景来说明为什么一旦我们要使用这很容易成为问题全局拟合参数协变量 本质上 我们有一个空
  • 通过重叠 row.names 和平均值来合并/组合两个数据集的最有效方法

    我想找到组合两个数据框并平均具有不同 row names 的列中的值的最有效方法 因此 我想从两个数据中取出重叠的 row names 并将它们合并为一个 列中的值应按平均值求平均值 示例数据 mtcars lt structure lis
  • R-特殊字符没有插入到mysql中

    如何使用r编程将特殊字符插入MySQL 我有一个数据框 它将从 tsv 文件读取数据 我想将这些值插入到包含 2000 行的 mysql 数据库数据框中 但它只插入 23 行 我正在使用 RODBC 库 问题在于数据中的特殊字符 样本数据
  • RODBC 查询错误地返回零行

    我遇到过类似的帖子 但我的问题看起来不同 我无法使用 rows at time 1 或 believeNRows False 修复这些查询的结果 我正在尝试使用 R 中的 RODBC 连接到 Oracle 数据库 我能够连接到数据库 但除了
  • 使用 jekyll、rmarkdown 和 github 写博客:如何显示图像

    我尝试使用三重奏 jekyll rmarkdown 和 github 制作一个博客 如下所示 http yihui name knitr jekyll http yihui name knitr jekyll 我的所有 Rmd 都在 sou
  • 如何在R闪亮中使用plotly

    我正在尝试为使用闪亮生成的输出添加图表 我收到图形生成错误 有人可以看一下并提供帮助吗 条形图参数是根据计算生成的基于计算的输出 server output graph lt renderPlotly plotly x c as numer
  • 如何在ggplot2图例标签中添加Latex代码?

    考虑以下示例 p lt ggplot data data frame A c 1 2 3 4 5 6 7 8 B c 4 1 2 1 3 2 4 1 C c A B A B A B A B p lt p geom line aes x A
  • 按组在数据帧上运行自定义函数

    用于循环数据框中的组的自定义函数 这是一些示例数据 set seed 42 tm lt as numeric c 1 2 3 3 2 1 2 3 1 1 d lt as numeric sample 0 2 size 10 replace
  • 如何找到循环矩阵何时收敛

    我得到了一个矩阵 P lt matrix c 0 0 0 0 5 0 0 5 0 1 0 1 0 0 4 0 0 4 0 0 2 0 2 0 3 0 0 3 0 0 0 3 0 5 0 0 2 0 0 0 0 4 0 6 0 0 0 0 0
  • 在 data.table 中添加缺失值的行

    我的问题在某种程度上与在 data frame 中添加缺失值行的最快方法 https stackoverflow com questions 10438969 fastest way to add rows for missing valu
  • 有pmin和pmax各取na.rm,为什么没有psum?

    看来 R 可能缺少一个明显的简单函数 psum 它是否以不同的名称存在 或者位于某个包中 x c 1 3 NA 5 y c 2 NA 4 1 min x y na rm TRUE ok 1 1 max x y na rm TRUE ok 1
  • 在 ggplot 中为 R 中的分类变量 x 轴绘制垂直线时出现问题

    我有下表 我想使用每个县的 st date wk 列绘制一条垂直线 请参阅下面的代码 但它不会使用 st date wk 列绘制垂直线 无法弄清楚我在这里做错了什么 任何帮助表示赞赏 Thanks dfx1 YEAR Week Area a
  • 调整闪亮代码中计算两点之间距离的方式

    下面的闪亮代码使用以下命令生成两点之间的路线googleway功能 请注意 此外 还计算了两点之间的距离 但这是欧氏距离 而不是使用googleway功能 计算距离的正确方法是执行以下操作 test lt google directions
  • 停止 lapply 从打印到控制台

    当我使用lapply并打印到控制台 它打印出不需要的内容 i NULL虽然我希望将预期的消息打印到控制台 我试过了suppressWarnings and suppressMessages但这些并不能消除不受欢迎的罪犯 我搜索了lapply
  • 在 docker 文件中安装私有 R 包

    我第一次尝试使用 Docker 和 ShinyProxy 在这个过程的一开始我遇到了很多困难 我开发了一些在本地运行良好的闪亮应用程序 我正在考虑将它们部署在我网站的一些文章中 这些闪亮的应用程序使用了 2 个我自己编码的包 它们位于我的计
  • R中逻辑回归的分类表

    我有一个由二分因变量组成的数据集 Y 和 12 个自变量 X1 to X12 存储在 csv 文件中 这是数据的前 5 行 Y X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 0 9 3 86 111 126
  • 使用深度名称向量作为索引替换嵌套列表

    采取一个简单的嵌套列表L L lt list lev1 list lev2 c bit1 bit2 other list yep 1 L lev1 lev1 lev2 1 bit1 bit2 other other yep 1 1 一个向量

随机推荐

  • 复合主键:好还是坏?

    虽然可以使用复合主键 但是对于下面的情况 这真的是一种不好的做法吗 Stackoverflow 上的共识在这个问题上似乎是双向的 Why 我想将订单付款存储在单独的表中 原因是 一个订单可以有许多项目 这些项目以多对多关系的形式在单独的表中
  • 在 C 中打印 Unicode 符号

    我正在尝试打印 unicode 星号字符 0x2605 http www fileformat info info unicode char 2605 index htm 在使用 C 的 Linux 终端中 我遵循了网站上其他答案建议的语法
  • 如何获取谷歌地图 v2 api 密钥以进行团队合作

    抱歉我的英语不好 我的 google 地图 api v2 密钥有问题 我和我的团队一起工作 我们的项目 android 项目 只需要一个 api 密钥 有可能吗 或者我团队的所有成员都必须生成 api 密钥才能运行 google 地图 您可
  • 无法在 python 中获取当前 url

    我创建了一个类和方法 如下所示 我需要获取当前页面的网址 但在调用 get full path 时出现错误 class A object def get user request current url request get full p
  • python statsmodels:帮助使用 ARIMA 模型进行时间序列

    statsmodels 的 ARIMA 为我的输出提供了不准确的答案 我想知道是否有人可以帮助我理解我的代码有什么问题 这是一个示例 import pandas as pd import numpy as np import datetim
  • 在 git Push 上硬重置

    我有一个接收后挂钩脚本位于我正在推送的远程存储库上 该脚本执行以下操作git reset hard 像这样的东西 git push opal Counting objects 74 done Delta compression using
  • Haskell 约束不小于实例头

    有些戒指可以配备标准功能 class Ring C a gt EuclideanDomain a where norm a gt Integer 使用此功能 可以通过明显的方式订购戒指 compare x y compare norm x
  • 从 Equals 方法返回 false 而不覆盖

    Write TestEquals class所以主要方法Puzzle3班级版画false 注意 您不能覆盖 TestEquals 类的 equals 方法 public class Puzzle3 public static void ma
  • Haskell:如何评估“1+2”等字符串

    实际上我有一些公式 x y 这是一个String 我设法更换了x y具有特定值的变量 例如 1 2 这仍然是String类型 现在我的表情就像 1 2 所以问题是如何计算字符串类型的表达式并得到结果 PS 我想要某样东西read 可以直接转
  • Android 生物识别回调不适用于 PIN-CODE

    我正在尝试使用指纹和 Pincode 来实现生物识别 指纹工作正常 但是当我尝试使用 pin 码时 会出现带有 pin 码的屏幕 但如果我调用 pin 码检查 则不会调用回调没有指纹 只调用 onAuthenticationSucceede
  • 在SSIS中使用脚本任务导入Json文件

    我是在 SSIS 中使用脚本任务导入 API 的新手 我必须管理一个简单的 API JSON 文件的导入 但这第二个 API JSON 文件有点棘手 我一直在看代码 只是不知道我做错了什么 我的 JSON 文件有一个标头 我需要确定需要循环
  • Firebase 分析在 DebugView 中显示不正确的数据

    我正在使用 Firebase 分析 我注册了两个用户属性 并且有两个自定义事件 每个事件包含 3 到 50 个不同的选项 我遇到的问题是 当我设置用户属性时 DebugView 通常会显示事件的旧用户属性或根本不显示 有时它可以正常工作 请
  • urllib.error.HTTPError:HTTP 错误 502:错误网关 PYTHON

    我尝试使用 urllib request urlopen url read 打开 Instagram URL 但收到错误urllib error HTTPError HTTP 错误 502 错误网关 username input enter
  • Angular 5 - 如何重定向到具有特定标头的外部 URL?

    这就是我试图用 Angular 实现的目标 this headers this http get urlApi subscribe data gt go to url with specific headers err gt console
  • Angular 2 模态弹出错误“表达式在检查后已更改”

    演示应用程序的 Github 存储库 https github com eddy80310 formBug 我有一个非常简单的应用程序 其中包含应用程序组件 子组件 帐户 处理消息对话框组件 弹出模式 的警报服务 为了演示目的 我有两种相同
  • React JS 拒绝加载图像,因为它违反了以下内容安全策略指令

    当我尝试重新加载反应应用程序网页时 我遇到了这个问题 注意 在开发阶段 此类事情没有问题 但是当我将其部署到生产时 我遇到了这个问题 谢谢 Refused to load the image http 104 248 153 121 808
  • PHP 字符串中的 JavaScript 数组

    我正在开发一个具有数千个值的应用程序 我正在尝试用 JavaScript 创建一个动态数组 我正在使用 AJAX 来获取我的值 所以我必须从 PHP 创建一个字符串 它应该能够在 JavaScript 中从字符串转换为数组 如何在 PHP
  • 删除不可变借用以进行可变借用

    我仍在学习 Rust 当尝试将 Dijkstra 作为培训项目的一部分实现时 我遇到了这个奇怪的问题 首先我定义一个HashMap let mut dist HashMap
  • thread/runnable、handler、runonuithread、asynctask 之间的区别

    我开始学习android编程并正在开发一个小游戏 我听说做后台操作或更新或下载或任何后台和耗时的事情不应该使用 ui 线程来完成 而是使用线程 可运行或异步任务 但我无法在线程中执行一些操作 例如与数据库的后台连接 因为此连接与剩余的处理程
  • R:按比例缩放 ggplot2、点阵或基本 R 图的函数

    在 R 中 我总是觉得很烦人的是 基本 R lattice 和 ggplot2 绘图都使用文本和绘图符号大小的绝对点大小 这意味着 如果您增加绘图窗口的大小以获取填充页面的图表 windows width 5 height 5 qplot